[英]Lucene Near Realtime Search
我希望通过使用“近实时搜索”等一些功能来提高搜索系统的速度,从而加快索引的开放速度。
谁能告诉我使用以下代码中的一个或另一个有什么区别和优点:
IndexReader newIndexReader = IndexReader.openIfChanged(oldReader);
和
IndexWriter writer; // create an IndexWriter here
...
IndexReader reader = writer.getReader();
请注意,在第一种情况下,我不需要indexWriter与IndexReader在同一个进程中。
首先, writer.getReader()
仅在3.6版本中可用,但在所有v4( writer.getReader()
,...)版本中都不存在。 因此,如果您关心可维护性,则不应使用它。
现在,回答你的问题。 writer.getReader()
刷新所有挂起的写入并无条件地打开一个新的读取器(另外还有一些其他限制 - 请参阅方法javadoc)。 如果进行了任何更改,则IndexReader.openIfChanged(oldReader)
仅打开新的阅读器,否则返回旧阅读器。
根据我的口味,从作家那里打开一个读者也在概念上是错误的(Lucene曾经有过这个问题的其他案例,例如曾经有可能使用读者删除文档)。
如果您在两者之间进行选择,我认为毫无疑问使用哪种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.