Как реализовать внутрипроцессную систему полнотекстового поиска - PullRequest
2 голосов
/ 17 сентября 2008

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

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

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

Есть предложения?

Ответы [ 7 ]

1 голос
/ 17 сентября 2008

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

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

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

0 голосов
/ 29 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

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