获取IndexWriter上的挂起更改数

时间:2011-04-13 05:40:54

标签: java lucene

我们拥有基于Lucene的本土搜索服务。我前面遇到的一个特殊问题是在IndexWriter上获得了许多待定更改。如果挂起的更改计数器为零,则无需提交索引,重新打开IndexReaderIndexSearcher等等。我们还有一些链接到IndexReader.commit()调用的应用程序级逻辑,如果提交点没有实际更改,最好不要调用它。

我可以访问调用方法IndexReader.updateDocument()IndexReader.remove()的所有位置,因此我只需编写自己的待处理更改计数器。但我感兴趣的可能是Lucene API本身已经存在一个? API检查没有给我足够的信息。

2 个答案:

答案 0 :(得分:3)

您可以使用IndexWriter.numRAMDocs来获取添加的文档数量,但我认为没有公共API可以获取当前缓冲删除的数量。

IndexWriter.ramSizeInBytes在这里也可能有用。它告诉您当前正在使用多少RAM,因此当您添加或删除文档时这会增加(但在刷新时会减少)。

请注意IndexReader.isCurrent仅在您从IndexWriter提交更改时才可用,即如果您有未决更改但未提交(或已关闭)作者,则IndexReader.isCurrent仍将返回true。

答案 1 :(得分:1)