Какая самая лучшая и самая активная технология поиска с открытым исходным кодом .Net?

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

Ответ 1

Несмотря на то, что Lucene.Net в течение довольно долгого времени не были "полномасштабными" версиями (то есть полной документацией, обновлениями веб-сайтов), в репозитории SVN все еще есть новые коммиты. Например, последняя версия (2.3.2) была отмечена в 07/24/09 (см. Здесь). Поскольку разработка по-прежнему активна, я буду использовать ее для новых проектов полнотекстового поиска.

Ответ 2

Я знаю, что это не open-source, но это бесплатное и очень всеобъемлющее предложение от Microsoft:

Microsoft Search Server 2008 Express

  • Актуальная релевантность.

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

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

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

    Непрерывное индексирование распространения.

    Коннекторы со встроенными индексами

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

    Хит-подсветка.

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

    Коррекция запросов.

    Повторяющееся сведение.

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

Если вы действительно не настаиваете на .Net, вы можете попробовать Sphinx. Открытый исходный код и доступен для всех платформ (Windows/Linux).