Рекомендуемый способ сделать основной поиск - PullRequest
0 голосов
/ 29 июня 2011

Мне нужно выполнить поиск по названию видео.Поиск будет выполняться только в одном столбце одной таблицы, поэтому это очень простой поиск.Вот что я сейчас использую для поиска:

video_set = video_set.filter(title__icontains=search)

и, используя print connection.queries, это превращается в это -

SELECT COUNT(*) FROM `userprofile_videoinfo` WHERE `userprofile_videoinfo`.`title` LIKE %search% 

Я очень новичок в поиске и SQLи кажется, что использование «% like%» - это то, что всегда не рекомендуется.Я просматриваю около 10000 записей, и мне было интересно, подойдет ли этот поиск для такого небольшого размера записи, или мне нужно поискать другие варианты поиска.И если 10 000 записей слишком малы, чтобы иметь значение, в каком размере / когда мне нужно искать другие варианты?Какие варианты я мог бы найти для высокопроизводительного базового текстового поиска?Спасибо.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Причина, по которой люди советуют вам избегать таких действий, как "% blah%", заключается в том, что при таком поиске трудно использовать индекс.Это означает, что если у вас нет других фильтров, он должен будет выполнить полное сканирование таблицы и проверить каждую запись, чтобы убедиться, что она соответствует вашему запросу, а не использовать индекс.С 10 000 записей это не будет значительным падением производительности.Если бы у вас было в 10 или 100 раз больше строк, вы бы заметили замедление.Полнотекстовый поиск кажется излишним для 10000 строк.Хотя есть и другие вопросы, которые следует учитывать, такие как использование заглавных букв и звуковые функции, которые вы, возможно, захотите рассмотреть (поскольку люди часто неправильно пишут слова :))

1 голос
/ 29 июня 2011

Предполагая таблицы MyISAM, изучите настройку полнотекстового поиска в вашей базе данных и используйте функцию MATCH () для своих поисков.

0 голосов
/ 29 июня 2011

Если возможности mysql для полнотекстового поиска недостаточно для ваших нужд.Взгляните на Apache Solr http://lucene.apache.org/solr/ или пилицен.Они дадут вам гораздо лучшие результаты для полнотекстового поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...