Есть ли какие-либо рекомендации по интеграции Lucene.NET в приложение ASP.NET MVC? - PullRequest
15 голосов
/ 23 мая 2011

Мне интересно, есть ли какие-либо рекомендации, лучшие практики или советы по интеграции поиска на основе Lucene.NET в веб-приложение ASP.NET MVC?

Вещи, которые я прочитал (или думаю,Я читал) в различных местах включают в себя следующее:

  • Один IndexWriter, многие IndexReader с
  • Когда индекс обновляется, сбросить / повторно инициализировать IndexReader s

Есть ли другие полезные советы или ресурсы, которые я должен прочитать перед началом работы?

Спасибо,Кирон

Ответы [ 2 ]

6 голосов
/ 24 мая 2011

Вот мои советы (в произвольном порядке):

  • Выберите наиболее подходящий механизм блокировки.
  • Используйте SetRAMBufferSizeMB, чтобы уменьшить издержки дискового ввода-вывода при записиindex.
  • Не переусердствуйте в использовании свойства SetMaxBufferedDocs.
  • Используйте объект Хиты поиска (TopDocs и ScoreDoc []) для получения результатов поиска по индексу.
  • Запись индексаэто дорогостоящая операция, поэтому используйте ее экономно.
  • Знайте, что данные, которые вы будете индексировать, могут быть трудны для поиска по некоторым типам данных (IE, даты), если они не сохраняются согласованно.

Несколько ошибок из одного из моих предыдущих проектов:

  • Мне пришлось использовать BooleanQuery, чтобы выполнить традиционную операцию AND для поиска по нескольким полям.
  • Естьв Lucene нет функции UPDATE, поэтому необходимо удалить и повторно добавить документ.
  • Невозможно отсортировать / OrderBy в поле с токенами.

Я бы посоветовал взглянуть наисходный код RavenDb, так как он построен на основе Lucene и использует ряд рекомендаций.

4 голосов
/ 24 мая 2011

RavenDb, безусловно, самый простой способ - это действительно lucene ++.

С точки зрения его использования, я бы рекомендовал взглянуть на движок блогов SubText.Код имеет лицензию MIT, так что вы можете просто использовать его в своем проекте, и он имеет очень хорошо разработанную систему записи / чтения индексов.

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

...