4

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

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

4

1 回答 1

3

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

但是,如果您忘记打电话IndexWriter.close(),那么您的索引可能不完整。由于您处理了如此多的文档,它可能会刷新其中的大部分,所以希望您只需要重新索引最后一个。按照 UI 的建议使用Luke快速浏览索引以查看其处于什么状态。

于 2011-03-21T06:36:26.910 回答