2011-04-13 44 views
0

我们有基于Lucene的自家搜索服务。前段时间我遇到的一个特别问题是获取IndexWriter的待处理更改的数量。如果挂起的更改计数器为零,则不需要提交索引,请重新打开IndexReaderIndexSearcher等。此外,我们还有一些应用程序级别的逻辑链接到IndexReader.commit()调用,如果在提交点没有实际更改,最好不要调用它。获取IndexWriter上未决更改的数量

我可以访问调用方法IndexReader.updateDocument()IndexReader.remove()的所有地方,所以我只需编写自己的挂起更改计数器即可。但我intrested可能是已经存在一个在Lucene API本身? API检查没有给我足够的关于该主题的信息。

回答

3

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

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

请注意,如果您提交从IndexWriter,即变化,如果你已经挂起的变化,但还没有提交(或关闭)笔者则IndexReader.isCurrent仍然会返回true IndexReader.isCurrent仅仅是可用的。