2011-10-11 62 views
1

我只是想知道如果我在正確的軌道上我應該怎樣建築師在我的應用我的Lucene的背景:關於使用Lucene的體系結構的建議?

  1. 創建一個單獨的類,將創建作家的一個實例。
  2. 每次需要讀取索引時都要構造一個閱讀器。
  3. 檢查reader.IsCurrent()以確定是否有更新。 3)。如果有更新,請讓IndexWriter的讀者使用NRT。
  4. 針對某個閾值提交任何更改並重置讀取器。

讓我知道我是否在正確的軌道上。關於如何讀寫的信息非常多,但對於使用NRT以及何時正確提交沒有足夠的信息。

回答

1

你基本上是在正確的道路上,但事實上,你可以在所有的應用程序中共享你的讀者/搜索者的一個實例,而無需構建它。

如果您有多個索引來管理它們,並嘗試在同一個應用程序中保留讀者和作者,請嘗試建立一個索引讀寫器工廠,以便您可以利用NRT功能Lucene.NET。

此外,還要檢查這個維基NRT建議:

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

1

我一直在使用幾乎相同的確切架構現在,我發現它工作正常。而不是在步驟3a中從IndexWriter讀取讀取器,請嘗試使用IndexReader.Reopen()。在第4步中,只要IsCurrent()爲false,就可以簡單地調用Reopen()。