繁体   English   中英

Lucene近实时搜索

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM