Советы по архитектуре с использованием Lucene? - PullRequest
1 голос
/ 11 октября 2011

Я просто хочу знать, нахожусь ли я на правильном пути с тем, как мне следует спроектировать мой контекст Lucene в моем приложении:

  1. Создать одноэлементный класс, который создаст экземпляр средства записи.
  2. Создайте считыватель каждый раз, когда необходимо прочитать индекс.
  3. Проверьте reader.IsCurrent (), чтобы определить, есть ли обновления.3a.Если есть обновления, заставьте читателя из IndexWriter использовать NRT.
  4. Зафиксируйте любые изменения в отношении некоторого порога и перезагрузите считыватель.

Дайте мне знать, если я нахожусь направильном пути.Существует так много информации о том, как читать и писать, но недостаточно об использовании NRT и о том, когда делать коммиты правильно.

Ответы [ 2 ]

1 голос
/ 20 октября 2011

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

Попробуйте создать фабрику чтения / записи индекса, еслиу вас есть несколько индексов для управления ими, и если вы можете себе это позволить, постарайтесь сохранить в одном приложении средство чтения и записи, чтобы вы могли воспользоваться функцией NRT в Lucene.NET.

Также проверьте этовики для NRT советы:

http://wiki.apache.org/lucene-java/NearRealtimeSearch

1 голос
/ 11 октября 2011

Я уже некоторое время использую почти одну и ту же архитектуру и обнаружил, что она работает нормально. Вместо того, чтобы получать читателя из IndexWriter на шаге 3а, попробуйте использовать IndexReader.Reopen (). И на шаге 4 вы можете просто вызывать Reopen () всякий раз, когда IsCurrent () имеет значение false.

...