java - 获取 IndexWriter 上待处理更改的数量

标签 java lucene

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

我可以访问调用方法 IndexReader.updateDocument()IndexReader.remove() 的所有位置,因此我只需编写自己的挂起计数器即可变化。但我很感兴趣 Lucene API 本身是否已经存在一个? API 检查没有为我提供有关该主题的足够信息。

最佳答案

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

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

请注意,IndexReader.isCurrent 仅当您从 IndexWriter 提交更改时才可用,即,如果您有挂起的更改但尚未提交(或关闭)写入器那么 IndexReader.isCurrent 仍将返回 true。

关于java - 获取 IndexWriter 上待处理更改的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644877/

相关文章:

solr - 如何使用 Luke 检查 Solr 索引

java - java中lucene-core 3.4.0支持哪些文件

mysql - MySQL复合表的搜索应该如何实现?

java - 带点的 Struts2 更好的 URL

java - 具有背景图像和剪切矩形的 JTextPane 问题

java - 如何执行随机算法

java - 为什么动画不更新?

java - CoordinatorLayout + CollapsingToolbarLayout 向上滚动时不设置工具栏

java - 保证 Solr 提交已经发生

Solr - {!ex} 在一个方面查询