如何解决在IndexWriter上获取挂起的更改数
| 我们有基于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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。