问题描述
|
我们有基于Lucene的本地搜索服务。我前段时间遇到的一个特定问题是要获取
IndexWriter
上待处理的更改的数量。如果未决更改计数器为零,则无需提交索引,重新打开IndexReader
,IndexSearcher
,依此类推。另外,我们还有一些与“ 3”调用链接的应用程序级逻辑,如果提交点没有实际变化,最好不要调用它。
我可以访问调用方法IndexReader.updateDocument()
和IndexReader.remove()
的所有地方,因此我只需编写自己的未决更改计数器即可。但是我很想知道Lucene API本身是否已经存在一个? API检查无法提供有关该主题的足够信息。
解决方法
请参见IndexReader.isCurrent()。
,您可以使用
IndexWriter.numRAMDocs
来获取添加的文档数量,但是我认为没有公共API可以获取当前缓冲删除的数量。
IndexWriter.ramSizeInBytes
在这里也可能有用。它会告诉您当前正在使用多少RAM,因此随着您添加或删除文档而会增加(但在进行刷新时会减少)。
注意,只有当您提交了来自IndexWriter
的更改时,IndexReader.isCurrent
才可用,即,如果您有未决的更改但尚未提交(或关闭)编写器,那么IndexReader.isCurrent
仍将返回true。