2012-06-18 5 views
3

Я ищу поисковую систему, которую я могу указать на столбец в моей базе данных, который поддерживает расширенные функции, такие как исправление орфографии и результаты «близко к».Поисковая система для одного столбца базы данных

Сейчас я просто используя

SELECT <column> from <table> where <colname> LIKE %<searchterm>%

и я пропускаю некоторые результаты, особенно когда пользователи допускают ошибки элементов.

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

+0

ли вы знаете настроек уже [Свист] (http://pypi.python.org/pypi/Whoosh/)? Я просто нашел его, выполнив поиск [Lucene] (http://en.wikipedia.org/wiki/Lucene) для python – DonCallisto

ответ

1

Я бы предложил изучить технологии с открытым исходным кодом, такие как поиск сфинксов.

3

Apache Solr - отличная поисковая система, которая обеспечивает (1) индексацию N-Gram (поиск не только полных строк, но и частичных подстрок, это очень помогает в получении одинаковых результатов) (2) Предоставляет заклинание Corrector, основанный на дистанции метрической/редактируемой дистанции (которая поможет вам получить «вы имели в виду chicago», когда пользователь вводит в chicaog) (3) Он предоставляет вам опцию «Нечеткий поиск» (Fuzzy Searches помогает вам получить близкие совпадения для вашего запроса, например, если пользователь вводит в GA-123, он получит VMDEO-123 в результате) (4) Solr также предоставляет вам компонент «Больше нравится», который поможет вам, как и вышеприведенные параметры ,

Solr (основанный на библиотеке поиска Lucene) является открытым исходным кодом и медленно растет, чтобы стать де-факто в индустрии поиска (вертикальной) и отлично подходит для поиска в базе данных (поскольку вы говорили об индексировании столбца базы данных, который прогулка для Solr). Lucene и Solr используются многими компаниями из списка Fortune 500, а также интернет-гигантами.

Поисковая система Sphinx также отличная (я тоже ее люблю, так как у нее очень низкая печать на ногах для всего & - это C++), но, чтобы сказать, Solr гораздо более популярен.

Теперь поддержка Python и API доступны для обоих. Однако Sphinx является exe, а Solr - HTTP. Поэтому для Solr вам просто нужно вызвать URL-адрес Solr из вашей программы python, которая вернет результаты, которые вы можете отправить на свой передний конец для рендеринга, так просто)

Пока все хорошо. На ваш вопрос:

Прежде всего, вы должны спросить себя, действительно ли вам нужна поисковая система? Поисковые системы хороши для всех случаев использования, упомянутых выше, но действительно предназначены для поиска в огромных количествах полнотекстовых данных или миллионных строк табличных данных. Алгоритмы, такие как «Вы имели в виду», «Подобные записи», «Корректоры заклинаний» и т. Д., Могут быть написаны сверху. Перед обнулением на Solr, пожалуйста, также ищите Google для (1) Корректора заклинаний Петра Норвика & (2) Индексация N-Gram. Возможно, просто написав несколько строк кода, вы можете получить действительно то, что искали.

Я оставляю это вам решать :)

0

Прежде чем идти вниз маршрут Solr/Sphinx для полнотекстового индексирования - что увеличивает сложность и их собственные накладные расходы - вы можете попробовать встроенный полнотекстовый двигателя в PostgreSQL, если вы используете эту базу данных. Его легко настроить и выполнить лучше, чем LIKE запросов.

Заканчивать https://github.com/hcarvalhoalves/django-tsearch2

Смежные вопросы