Эффективный поиск подстроки в Python с MySQL - PullRequest
0 голосов
/ 15 октября 2010

Я пытаюсь реализовать живой поиск для моего сайта. Тот, который идентифицирует слова или части слова в данной строке. Мгновенные результаты затем подчеркиваются там, где они соответствуют запросу.

Например, запрос «Жареные зеленые помидоры» даст:

SELECT * 
FROM articles 
WHERE (title LIKE '%fried%' OR
       title LIKE '%green%' OR
       title LIKE '%tomatoes%)

Это прекрасно работает с очень маленьким набором данных. Однако, как только количество записей в базе данных увеличивается, этот запрос быстро становится неэффективным, поскольку он не может использовать индексы.

Я знаю, что это технически для FULLTEXT поиска в MySQL, но качество результатов просто не такое хорошее.

Какие есть альтернативы для поиска по подстроке очень высокого качества при сохранении эффективности запроса?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 октября 2010

Сфинкс поможет вам быстро искать в огромном количестве данных

0 голосов
/ 15 октября 2010

это множество поисковых систем FULLTEXT, которые вы можете использовать, например sphinx , Apache Solr , Whoosh (это чистый python) и Xapian . django-haystack (если вы используете django), который может взаимодействовать с 3 последними;

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