【问题标题】:What can cause a Lucene Index to be corrupted?什么会导致 Lucene 索引损坏?
【发布时间】:2013-01-09 17:10:51
【问题描述】:

我正在尝试找出从损坏的索引中恢复的策略。为了“掌握”这可能发生的频率,我主要想知道可能导致索引损坏的事情,其次,如果存在有关这些事件发生概率的信息,那么虽然不是那么重要。

【问题讨论】:

  • 我认为索引损坏不会发生。损坏的可能性与您的实现或运行时中的条件可能使其损坏一样。损坏可能是由于索引文件丢失或格式不正确造成的。损坏的索引异常将提供更多调试信息(缺少段文件、不正确的版本等),这会有所帮助,您应该尝试运行CheckIndex,以确定您的索引中出了什么问题,并检查日志以查看如果有任何可能的原因出现在那里。
  • 可能导致索引损坏的一件事(并且曾经发生在我身上)是在提交时杀死已耗尽内存的挂起的 solr 实例。那时我能够从快照中恢复索引。这种情况不太可能发生,尤其是在最新版本的 Lucene 中。
  • 感谢您的 cmets。据我所知,唯一的原因是 Lucene/SOLR/我编写的某些代码中的错误或硬件故障。
  • 在尝试打开索引时,我的 Lucene.Net 应用程序中出现了CorruptIndexException。该应用程序创建了索引,后来使用 Luke 进行了编辑。与应用程序使用的引擎版本相比,问题似乎是由于 Luke 的版本使用了更新版本的 Lucene 引擎。
  • 我正在使用原始 lucene API 6.0.0 并遇到了@D_K 提到的问题。我的程序由于OutOfMemory 停止了一次运行,然后从下一次运行病房开始,索引目录从未工作过。

标签: solr lucene


【解决方案1】:

大多数时候索引应该是由于编写器关闭不当造成的。

IndexWriter writer=new IndexWriter(dir,analyzer,true);
writer.addDocument(doc);
writer.close(false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多