首页 > 解决方案 > 关闭 directoryReader 时如何修复“句柄无效”?

问题描述

我正在使用 Lucene 4.8.0,并且我有一个无法关闭的 DirectoryReader。当我尝试时,出现以下错误:

引起:java.lang.RuntimeException:java.io.IOException:句柄在 apache.lucene.index.SegmentCoreReaders.notifyCoreClosedListeners(SegmentCoreReaders.java 的 apache.lucene.util.IOUtils.reThrowUnchecked(IOUtils.java:368) 处无效:203) 在 apache.lucene.index.SegmentCoreReaders.decRef(SegmentCoreReaders.java:183) 在 apache.lucene.index.SegmentReader.doClose(SegmentReader.java:258) 在 apache.lucene.index.IndexReader.decRef(IndexReader. java:243) 在 apache.lucene.index.StandardDirectoryReader.doClose(StandardDirectoryReader.java:364) 在 apache.lucene.index.IndexReader.decRef(IndexReader.java:243) 在 apache.lucene.index.IndexReader.close(IndexReader .java:479)

我的代码如下:

FSDirectory indexDir = null;
DirectoryReader dirReader = null
try{
indexDir = new SimpleFSDirectory(new File(baseDir + "/index"),null);
dirReader = DirectoryReader.open(indexDir);

//operations

finally {
if (dirReader != null) {
    dirReader.close();
}
if (indexDir != null) {
    indexDir.close();
}
}

但这会在 dirReader.close() 处崩溃。我是 Lucene 的新手,如果我错过了一些众所周知或明显的东西,我很抱歉。

标签: javalucene

解决方案


推荐阅读