使用Lucene建筑的建议?

时间:2011-10-11 11:10:59

标签: lucene lucene.net

我只是想知道我是否应该如何在我的应用程序中构建我的Lucene上下文:

  1. 创建一个将创建编写器实例的单例类。
  2. 每次需要阅读索引时构建一个阅读器。
  3. 检查reader.IsCurrent()以确定是否有更新。 3A。如果有更新,请让IndexWriter的读者使用NRT。
  4. 提交有关某些阈值的任何更改并重置读者。
  5. 如果我走在正确的轨道上,请告诉我。有很多关于如何读写的信息,但关于使用NRT以及何时正确提交还不够。

2 个答案:

答案 0 :(得分:1)

我现在已经使用了几乎相同的精确架构,我发现它可以正常工作。不要在步骤3a中从IndexWriter获取读者,而是尝试使用IndexReader.Reopen()。在第4步中,只要IsCurrent()为false,就可以调用Reopen()。

答案 1 :(得分:1)

您大部分都在正确的道路上,但事实上,您可以在所有应用程序中共享您的读者/搜索者的单个实例,而无需构建它。

如果您有多个索引来管理它们,请尝试拥有索引读取器/写入器工厂,如果您能负担得起,请尝试将读取器和写入器保留在同一应用程序中,这样您就可以从Lucene的NRT功能中受益.NET。

另外,请查看此Wiki以获取NRT建议:

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