Как реализовать поисковую систему с использованием Python MySQL? - PullRequest
0 голосов
/ 23 июня 2011

У меня есть база данных MySQL, созданная с помощью пользовательского скрипта Python. Мне нужно реализовать полнотекстовый поиск по таблице в базе данных. Я могу использовать SELECT * FROM myTable WHERE (title LIKE '%hello%' OR title LIKE '%world%'), однако я не думаю, что это очень эффективный способ реализации поиска, поскольку данные в таблице содержат около миллиона строк.

Я использую таблицы innoDB, поэтому встроенный полнотекстовый поиск MySQL для MyISAM не будет работать. Любые предложения по методам или учебникам, которые укажут мне правильное направление?

Ответы [ 3 ]

4 голосов
/ 23 июня 2011

Если ваши данные имеют такой контент, как вы могли бы использовать какой-нибудь механизм полнотекстового поиска, например Lucene:

http://lucene.apache.org/pylucene/

Если вы делаете Джанго, у вас есть стог сена:

http://haystacksearch.org/

Solr - это также технология, связанная с полнотекстовым поиском, о которой вы могли бы прочитать:

http://wiki.apache.org/solr/SolPython

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

Взгляните на: Полнотекстовый поиск с InnoDB .Они предлагают использовать внешнюю поисковую систему, поскольку нет действительно хорошей возможности поиска в таблицах innoDB.

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

Я не эксперт по MySQL, но могу сразу сказать, что вам не следует выбирать все, что соответствует значению.Если пользователь вводит «и» и тысячи результатов, может быть лучше выбрать определенную сумму из базы данных, а затем загрузить больше, используя параметр LIMIT, когда пользователь перейдет на следующую страницу (например).1001 *

SELECT * FROM `myTable` WHERE (`title` LIKE '%hello%' OR `title` LIKE '%world%') LIMIT numberOfValues,startingAtRowNumber

Таким образом, чтобы ответить на ваш вопрос, запрос не эффективен, и вы должны использовать что-то, как я предложил выше.

...