将Document添加到索引后忘记关闭Lucene IndexWriter

我有一个程序运行2天来为大约1.6亿个文本文件构建一个Lucene索引,在程序结束后,我尝试搜索索引并发现索引没有正确构建,indexReader.numDocs()返回0.我检查过索引目录,看起来不错,所有的索引数据似乎都在那里,目录的大小是1.5千兆字节。

我检查了我的代码,发现我忘了调用indexWriter.optimize()和indexWriter.close(),我想知道是否有可能重新优化()索引,所以我不需要重建整个索引从头开始? 我真的不希望该计划再花2天时间。

调用IndexWriter.optimize()不是必需的,可以稍后通过重新打开索引来调用。 它只是优化索引中的文档以获得更好的读取性能,并且不会影响任何内容。

如果您忘记调用IndexWriter.close()那么您的索引可能不完整。 由于您处理了如此多的文档,因此很可能会刷新大部分文档,所以希望您只需要重新索引最后的文档。 使用Luke建议用户界面快速浏览索引以查看其状态。