Что является лучшей и наиболее активной поисковой технологией с открытым исходным кодом .Net? - PullRequest
42 голосов
/ 11 августа 2009

Я пытаюсь выбрать технологию поиска / индексации с открытым исходным кодом для проекта .Net.Кажется, что стандартом для Java-проектов является Lucene, но в отношении .Net проект Lucene.Net выглядит довольно неактивным.Это все еще лучший вариант?Или есть другие жизнеспособные альтернативы?

Ответы [ 11 ]

23 голосов
/ 21 августа 2009

Хотя они не были «полноценными» выпусками (то есть полной документацией, обновлениями сайта) Lucene.Net в течение достаточно долгого времени, все еще есть новые коммиты в его SVN-репозиторий. Например, последний выпуск (2.3.2) был отмечен 24.07.09 ( см. Здесь ). Поскольку разработка все еще активна, я бы использовал ее для новых проектов полнотекстового поиска.

11 голосов
/ 20 августа 2009

I знаю это не открытый код, но это бесплатный и очень всеобъемлющий предложение от Microsoft:

Microsoft Search Server 2008 Express

  • Соответствие стандартным требованиям.

    Локализованный интерфейс.

    Расширенный поиск.

    Нет предустановленных пределов документа.

    Индексация непрерывного распространения.

    Готовые соединители индексации

    Содержание резюме.

    Подсветка попаданий.

    Лучшие ставки и определения.

    Исправление запроса.

    Дубликат сворачивается.

    Фильтр по свойствам.

    Фильтр по языку.

    Сортировать по дате.

    Уведомления по электронной почте / RSS

6 голосов
/ 11 августа 2009

SQLite имеет FTS3 (полнотекстовый поиск 3), который может делать то, что вы хотите. У меня нет прямого опыта с этим, но я считаю, что он был разработан специально для того, чтобы делать то, что делает Lucene, по крайней мере, в простом случае. Я не верю, что вы можете изменить токенизатор или что-то еще (без изменения исходного кода, во всяком случае), но это вариант.

6 голосов
/ 11 августа 2009

lucene.net обязательно будет отставать от Java, так как это порт. Мне также не нравится, что порт lucene является прямой копией, хотя, по-моему, он облегчает работу с документами. Нужно использовать Solr , если вам не нужна сверхплотная (двоичная) интеграция. Я использовал это раньше с хорошим успехом. Это все еще работает на Lucene, но я думаю, что это лучше, поскольку у него есть некоторые лучшие функции. Вы можете использовать его из .net через конечную точку HTTP.

Один вопрос, который нужно задать себе, - это то, что вам действительно нужно / нужно в поисковом решении. Существует много способов реализации поиска, и не все решения подходят для каждой ситуации.

5 голосов
/ 16 июля 2010

После использования Lucene.Net в нескольких проектах я также хотел бы добавить предложение по компиляции Java-версии lucene в код .net с IKVM.NET . Это прекрасно работает, и вам никогда не придется беспокоиться об устаревшей версии Java. У вас также есть возможность скомпилировать все дополнительные библиотеки и использовать их (я использую средства поиска ГИС в одном проекте).

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

Lucene.net реализован в nHibernate, поэтому, если вы также ищете O / R Mapper, комбинация может стоить более глубокой проверки.

В настоящее время мы разрабатываем прототип, и настройка Lucene выполняется за несколько минут (мы используем свободный nhibernate).

3 голосов
/ 20 августа 2009

Как я понимаю, вам нужен "просто" полнотекстовый индекс в существующей базе данных, и полнотекстовый поиск SQL Server в принципе работал для вас, но ваша текущая реализация / настройка слишком медленная.

На вашем месте я бы не стал использовать совсем другой подход (просто подумайте о беспорядке, чтобы синхронизировать внешний индекс с вашей базой данных, или объедините результаты запросов обоих и т. Д.). Попытайтесь устранить проблему с производительностью SQL Server, поскольку никто не будет всерьез предполагать, что 6сек для поиска строк 7К - это последнее слово для решения корпоративного класса, которое используется для некоторых из самых больших баз данных вокруг ... Может быть, попытаться задать новый вопрос о распространенных подводных камнях с этой функцией (я не эксперт в этом вопросе), и вам может понадобиться простое исправление вместо полной перестройки вашей поисковой архитектуры;)

3 голосов
/ 11 августа 2009

Хотя это не .net, я бы порекомендовал использовать Solr, поскольку он построен на lucene, и его будет легко интегрировать, учитывая тот факт, что он возвращает XML / HTTP и JSON

2 голосов
/ 11 августа 2009

Взгляните на www.searcharoo.net . У него есть сканер и такие функции, как работа, индексирование офисных документов / PDF. Автор очень активен в статьях проекта кода и довольно быстро отвечает на вопросы.

1 голос
/ 30 ноября 2010

Раньше я использовал DotLucene, но столкнулся с рядом проблем. основным был тот факт, что для запуска требовалось полное доверие.

С тех пор я перешел на использование SearchAroo: http://www.searcharoo.net/

он использует хранилище данных XML, и я обнаружил, что его производительность ОЧЕНЬ похожа на точечный люцен.

если вы ищете другой вариант, я бы обязательно посмотрел.

...