Я разработал приложение индекса и поиска с библиотекой Lucene. но эта библиотека имеет некоторые ограничения в пользовательском ранжировании в моем контексте, помимо ее производительности, мне нужна масштабируемость и доступ ко всем типам частот слов и т.д. есть ли доступная полная текстовая библиотека с открытым исходным кодом?
Каков наилучший полнотекстовый поиск с открытым исходным кодом (предпочтительный .NET)?
Ответ 1
http://www.sphinxconnector.net/
Ключевые функции Sphinx:
- высокая производительность индексации и поиска;
- расширенные инструменты индексирования и запросов (гибкий и многофункциональный текстовый токенизатор, язык запросов, несколько разных режимов ранжирования и т.д.);
- расширенная обработка результатов после обработки (SELECT с выражениями, WHERE, ORDER BY, GROUP BY и т.д. по результатам текстового поиска);
- проверенная масштабируемость до миллиардов документов, терабайт данных и тысячи запросов в секунду;
- простая интеграция с источниками данных SQL и XML и интерфейсами поиска SphinxAPI, SphinxQL или SphinxSE;
- простое масштабирование с распределенным поиском.
Чтобы развернуть бит, Sphinx:
- имеет высокую скорость индексирования (до 10-15 Мбайт/с на ядро на внутреннем эталоне);
- имеет высокую скорость поиска (до 150-250 запросов/сек на ядро против 1 000 000 документов, 1,2 ГБ данных по внутреннему эталону);
- обладает высокой масштабируемостью (самые большие известные кластерные индексы над 3 000 000 000 документов, а самый загруженный - более 50 000 000 запросов/день);
- обеспечивает хорошее ранжирование релевантности путем сочетания ранжирования ранжирования фразы и статистического (BM25) ранжирования;
- предоставляет распределенные возможности поиска;
- предоставляет генерации отрывков документов (фрагментов);
- обеспечивает поиск внутри приложения с помощью интерфейсов SphinxAPI или SphinxQL и внутри MySQL с подключаемым механизмом хранения SphinxSE;
- поддерживает логическую, фразу, близость слова и другие типы запросов;
- поддерживает несколько полных текстовых полей для каждого документа (до 32 по умолчанию);
- поддерживает несколько дополнительных атрибутов на документ (т.е. группы, временные метки и т.д.);
- поддерживает стоп-слова;
- поддерживает словари морфологических словоформ;
- поддерживает исключения токенизации;
- поддерживает как однобайтовые кодировки, так и UTF-8;
- поддерживает стриминг (встроены стволовые средства для английского, русского и чешского языков, а стволовые средства для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского, венгерского языков доступны путем создания третьего библиотека libstemmer);
- поддерживает MySQL изначально (поддерживаются все типы таблиц, включая MyISAM, InnoDB, NDB, Archive и т.д.);
- поддерживает PostgreSQL изначально;
- поддерживает базы данных, совместимые с ODBC (MS SQL, Oracle и т.д.),
- ... имеет 50+ других функций, не перечисленных здесь, обратитесь к API и руководству по настройке!