【问题标题】:Forgot to close the Lucene IndexWriter after adding Documents to the index将文档添加到索引后忘记关闭 Lucene IndexWriter
【发布时间】:2011-03-21 06:15:54
【问题描述】:

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

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

【问题讨论】:

  • 你怎么知道,索引已损坏?尝试在 LUKE getopt.org/luke 中打开,看看是否可以显示文档!

标签: java lucene indexing full-text-indexing


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。我想我需要重新索引所有文件,因为我不知道哪些文件没有被刷新,我需要准确的索引。
  • 您可以遍历索引中的文档以确定哪些文档存在,然后再重新索引所有内容。见stackoverflow.com/questions/2311845/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多