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

时间:2011-03-21 06:15:54

标签: java lucene indexing full-text-indexing

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

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

1 个答案:

答案 0 :(得分:3)

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

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