Как внедрить встроенную полнотекстовую поисковую систему

StackOverflow https://stackoverflow.com/questions/84339

Вопрос

В одном из наших коммерческих приложений (Win32, написанном на Delphi) мы хотели бы реализовать полнотекстовый поиск.Приложение хранит пользовательские данные в каком-то двоичном формате, который непосредственно не распознается как текст.

В идеале я хотел бы найти либо встроенное решение (DLL была бы в порядке), либо локальный сервер, к которому я мог бы получить доступ через TCP (предпочтительно).API должен позволять мне отправлять текстовую информацию на сервер (вместе с метаданными, представляющими двоичный двоичный объект, из которого она была получена) и, конечно же, он должен позволять мне выполнять полнотекстовый поиск с хотя бы минимальной поддержкой логических операторов и поиска по подстрокам.Требуется поддержка Unicode.

Я нашел обширный список поисковых систем по Stack Overflow (Какие существуют Поисковые серверы?) но я действительно не понимаю, какой из этих двигателей мог бы удовлетворить мои потребности.Я подумал о том, чтобы спросить мнение Коллектива, прежде чем потратить день или два на тестирование каждого из них.

Есть какие-нибудь предложения?

Это было полезно?

Решение

На рынке есть несколько вариантов.Либо полностью готовые коммерческие продукты, либо варианты с открытым исходным кодом.Ваш выбор поставщика услуг поиска во многом зависит от клиентов, на которых вы ориентируетесь.

У Microsoft есть бесплатная экспресс-версия их поискового сервера.Насколько я знаю, экспресс-версия ограничена запуском уровня приложений на одном сервере.

Существует также В Apache Lucene, В проект с открытым исходным кодом.У него хороший API, который прост в использовании, и большое сообщество пользователей.Оригинальный проект основан на Java, но существуют и другие реализации такие , как Люцен для .NET, который я использовал лично.

Другие советы

Я бы рекомендовал взглянуть на SQLite - полнотекстовый поиск включен в последнюю версию.

Я полагаю, ответ зависит от вашей базы данных.Например, SQL Server имеет полнотекстовый поиск, а также запросы на английском языке, если это когда-либо потребуется.

Взгляните на использование PostgreSQL и tsearch.

Попробуйте использовать postgresql с tsearch

Сфинкс вероятно, это наиболее эффективный и масштабируемый вариант, в то время как SQLite - FTS3 это самый простой вариант.

Пока не в процессе, Солр очень быстрый (основанный на Lucene) и легко доступный с любой платформы (HTTP)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top