Java 如何在Lucene中找到开放的读者

Java 如何在Lucene中找到开放的读者,java,lucene,Java,Lucene,我有一些IndexReader(用于不同的提交)和一个IndexWriter打开。我索引了一些文档,最后只打开一个阅读器,关闭旧的阅读器。读卡器应该关闭,但当我重新启动系统(意味着我重新启动IndexWriter)时,实际上磁盘中索引的大小至少缩小了一半,这意味着可能有些读卡器仍然打开。有没有办法计算出在某一时刻仍在使用的每次提交的读卡器 当时,我们将应用程序重新划分为使用IndexSearcher(通过SearchManager),正是因为这个原因:IndexReaders在并发性和资源清理方

我有一些IndexReader(用于不同的提交)和一个IndexWriter打开。我索引了一些文档,最后只打开一个阅读器,关闭旧的阅读器。读卡器应该关闭,但当我重新启动系统(意味着我重新启动IndexWriter)时,实际上磁盘中索引的大小至少缩小了一半,这意味着可能有些读卡器仍然打开。有没有办法计算出在某一时刻仍在使用的每次提交的读卡器

当时,我们将应用程序重新划分为使用IndexSearcher(通过SearchManager),正是因为这个原因:IndexReaders在并发性和资源清理方面有一种扭曲的方法,以至于我们发现无法管理(很明显,我们和许多其他人——甚至在将SearchManager添加到API之前,它的方法就被推荐了)“Lucene在行动”)

嗨,佩利特,非常感谢你的回答。我的问题是我缓存了每个片段的信息,并用每个片段阅读器创建了一个多阅读器。当我不再使用阅读器时,我会关闭片段和多阅读器,但在管理上,看起来我有一个错误!很抱歉,我对此没有任何见解-ap神学