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

Иногда простое" static Foo foo = new Foo(); " недостаточно. Просто думайте о некоторой вставке основных данных, которую Вы хотите сделать.

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

public class Singleton {

    private static Singleton instance = null;

    static {
          instance = new Singleton();
          // do some of your instantiation stuff here
    }

    private Singleton() {
          if(instance!=null) {
                  throw new ErrorYouWant("Singleton double-instantiation, should never happen!");
          }
    }

    public static getSingleton() {
          return instance;
    }

}

Теперь, что происходит? Класс загружается через загрузчик класса. Непосредственно после того, как класс интерпретировался от массива байтов, VM выполняется статичный {} - блок. это - целый секрет: статический блок только называют однажды, время, данный класс (название) данного пакета загружается этим загрузчиком класса.

42
задан jamesaharvey 11 August 2009 в 00:49
поделиться

10 ответов

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

23
ответ дан 26 November 2019 в 23:52
поделиться

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

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

6
ответ дан 26 November 2019 в 23:52
поделиться

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

3
ответ дан 26 November 2019 в 23:52
поделиться

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

6
ответ дан 26 November 2019 в 23:52
поделиться

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

2
ответ дан 26 November 2019 в 23:52
поделиться

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

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

3
ответ дан 26 November 2019 в 23:52
поделиться

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

Microsoft Search Server 2008 Express

  • Релевантность "из коробки".

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

    Расширенные возможности поиска.

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

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

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

    Сводные данные о содержании.

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

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

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

    Повторное сворачивание.

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

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

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

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

11
ответ дан 26 November 2019 в 23:52
поделиться

Lucene.net is implemented in nHibernate, so if you also are looking for an O/R mapper, the combination may be worth a deeper check.

We currently develop a prototype and configuring Lucene is done in a bunch of minutes (we use fluent nhibernate).

4
ответ дан 26 November 2019 в 23:52
поделиться

If you don't really insist on .Net you can give Sphinx a try. Open source and available for all platforms (Windows / Linux).

0
ответ дан 26 November 2019 в 23:52
поделиться

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

5
ответ дан 26 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: