我有一个程序运行2天,为大约1.6亿个文本文件构建一个Lucene索引,在程序结束后,我尝试搜索索引,发现索引没有正确构建,indexReader.numDocs()返回0我检查了索引目录,看起来不错,所有的索引数据似乎都在那里,目录的大小是1.5 GB。
我检查了我的代码,发现我忘了调用indexWriter.optimize()和indexWriter.close(),我想知道是否有可能重新优化()索引,所以我不需要重建整个指数从头开始?我真的不希望该计划再花2天。
答案 0 :(得分:3)
调用IndexWriter.optimize()
不是必需的,可以稍后通过重新打开索引来调用。它只是优化索引中的文档以获得更好的读取性能,并且不会影响任何内容。
如果您忘记拨打IndexWriter.close()
,那么您的索引可能不完整。由于您处理了如此多的文档,因此可能会刷新大部分文档,所以希望您只需要重新索引最后一个文档。根据UI的建议使用Luke来快速浏览索引以查看它所处的状态。