【问题标题】:Lucene indexes getting deleted after application restart应用程序重新启动后 Lucene 索引被删除
【发布时间】:2016-07-09 02:43:33
【问题描述】:

在我的 Spring/Lucene 应用程序中,我使用的是 Lucene IndexWriterTrackingIndexWriterSearcherManagerControlledRealTimeReopenThread

现在我正在尝试为数千个文档编制索引。为此,我添加了 Apache ActiveMQ 并在单独的消息使用者中为每个文档编制索引。

我注意到一个严重的问题 - 如果下次应用程序重新启动后 JVM 异常终止,我的 Lucene 索引为空,因为未执行 IndexWriter.commit() 操作。

如果我在每个trackingIndexWriter.addDocument(document); 之后调用IndexWriter.commit(),一切正常。

我认为在每个 trackingIndexWriter.addDocument(document); 之后使用 IndexWriter.commit() 并不是一个好主意,尤其是从性能的角度来看。

应用异常终止后如何正确管理我的索引不丢失?

【问题讨论】:

    标签: lucene


    【解决方案1】:

    IndexWriter.commit() 只会刷新数据。它既不会优化您的索引,也不会关闭作者。

    可以再次使用相同的 Indexwriter 添加更多数据。

    不要调用IndexWriter.close(),它不仅会刷新数据,还会优化索引,操作相当慢。

    一旦你完成了,最后你就可以关闭进行优化了。

    所以从性能的角度来看,每次添加文档后都可以提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-03
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多