我们有基于 Lucene 的本土搜索服务。我前段时间遇到的一个特殊问题是获取 IndexWriter
上待处理更改的数量。如果挂起的更改计数器为零,则无需提交索引,重新打开 IndexReader
、IndexSearcher
等。此外,我们还有一些链接到 IndexReader.commit() 调用的应用程序级逻辑,如果提交点没有实际更改,最好不要调用它。
我可以访问调用方法 IndexReader.updateDocument()
和 IndexReader.remove()
的所有位置,因此我只需编写自己的挂起计数器即可变化。但我很感兴趣 Lucene API 本身是否已经存在一个? API 检查没有为我提供有关该主题的足够信息。
最佳答案
您可以使用IndexWriter.numRAMDocs
来获取添加的文档数量,但我认为没有公共(public)API来获取当前缓冲删除的数量。
IndexWriter.ramSizeInBytes
在这里也可能有用。它告诉您当前正在使用多少 RAM,因此当您添加或删除文档时,该 RAM 会增加(但在发生刷新时会减少)。
请注意,IndexReader.isCurrent
仅当您从 IndexWriter
提交更改时才可用,即,如果您有挂起的更改但尚未提交(或关闭)写入器那么 IndexReader.isCurrent
仍将返回 true。
关于java - 获取 IndexWriter 上待处理更改的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644877/