2011-10-11 60 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()。