我们拥有基于Lucene的本土搜索服务。我前面遇到的一个特殊问题是在IndexWriter
上获得了许多待定更改。如果挂起的更改计数器为零,则无需提交索引,重新打开IndexReader
,IndexSearcher
等等。我们还有一些链接到IndexReader.commit()
调用的应用程序级逻辑,如果提交点没有实际更改,最好不要调用它。
我可以访问调用方法IndexReader.updateDocument()
和IndexReader.remove()
的所有位置,因此我只需编写自己的待处理更改计数器。但我感兴趣的可能是Lucene API本身已经存在一个? API检查没有给我足够的信息。
答案 0 :(得分:3)
您可以使用IndexWriter.numRAMDocs
来获取添加的文档数量,但我认为没有公共API可以获取当前缓冲删除的数量。
IndexWriter.ramSizeInBytes
在这里也可能有用。它告诉您当前正在使用多少RAM,因此当您添加或删除文档时这会增加(但在刷新时会减少)。
请注意IndexReader.isCurrent
仅在您从IndexWriter
提交更改时才可用,即如果您有未决更改但未提交(或已关闭)作者,则IndexReader.isCurrent
仍将返回true。
答案 1 :(得分:1)