Какой пакет полнотекстового поиска я должен использовать для SQLite3? - PullRequest
7 голосов
/ 11 августа 2009

SQLite3 поставляется с тремя различными полнотекстовыми поисковыми системами, называемыми FTS1, FTS2 и FTS3. В документации, доступной на веб-сайте, упоминается, что FTS1 стабилен, FTS2 находится в разработке и что вам следует использовать FTS2. Примеры, которые я нахожу в Интернете, используют FTS3, который находится в CVS, и не документирован по сравнению с FTS2. Насколько я могу судить, ни одна из полнотекстовых поисковых систем не имеет объединенного источника.

Итак, мой вопрос: какой из этих трех механизмов, если таковые имеются, я должен использовать для полнотекстовой индексации в SQLite? Или я должен просто использовать сторонний инструмент, такой как Sphinx, или нестандартное решение в Lucene?

Ответы [ 2 ]

6 голосов
/ 17 декабря 2009

Начиная с 3.6.21, FTS3 хорошо документирован и получил более официально видимый статус.

FTS3 является частью стандартной библиотеки DLL sqlite для Windows, не уверен насчет объединенного источника.

Мы используем его на производстве около года без особых проблем.

4 голосов
/ 29 августа 2009

Недавно я тоже изучал полнотекстовые решения. Похоже, что у SQLite де-факто сейчас нет выбора. Независимо от того, что вы выберете, вам неизбежно придется перестроить его по мере развития различных решений FT2, FT3 и т. Д. Так что попробуйте и предположите, что в будущем вам нужно будет больше заниматься разработкой, чтобы идти в ногу с изменением полнотекстовой технологии.

Sphinx Search пока не имеет прямой поддержки SQLite. Сейчас он поддерживает только MySQL и PostgreSQL (около августа 2009 г.). Поэтому вам придется взломать свой собственный коннектор SQLite или перенести данные SQLite в MySQL или PostgreSQL, а затем проиндексировать данные с помощью Sphinx Search. Я думаю, что кто-то работает над патчем Sphinx Search для поддержки Firebird, так что, может быть, это не так сложно, если вы готовы закатать рукава.

Также имейте в виду, что у Sphinx Search есть некоторые ограничения относительно постепенного добавления данных в индекс. Вы должны потратить около часа на чтение документа, прежде чем решите его использовать.

Я не знаю ни одного прямого способа индексации данных SQLite в Lucene. Вам, вероятно, придется написать собственный код для обработки пакетов данных SQLite, добавляя строки в индекс Lucene по одной за раз. Это похоже на использование Lucene независимо от того, какая база данных.


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

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