【问题标题】:Lucene hot index backup using IndexReader instead of IndexWriter/SnapshotDeletionPolicyLucene 热索引备份使用 IndexReader 而不是 IndexWriter/SnapshotDeletionPolicy
【发布时间】:2011-06-03 07:00:28
【问题描述】:

是否应遵循以下代码行来获取 lucene 索引或 IndexWriter/SnapshotDeletionPolicy 的热备份,如 Lucene index backup 中所述?

Directory dir = ...;
IndexReader reader = IndexReader.open(dir);
IndexCommit commit = reader.getIndexCommit();
Collection<String> fileNames = commit.getFileNames();
//copy the files
reader.close();

即使在锁定的索引上,您也可以在提交点打开读取器,而写入器仍可能更改索引。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    如果你没有 IndexWriter 写入索引,那么上面的代码就可以了。

    但是针对索引打开的 IndexWriter 可以轻松删除此 IndexReader 引用/仍在使用的文件(例如,当合并完成时),然后您的备份将失败。

    【讨论】:

      【解决方案2】:

      您需要使用 SnapshotDeletionPolicy。

      除非您有未发布的快照,否则作者可以随意删除文件。这只会在刷新/关闭时发生,因此您可能大部分时间都可以摆脱它,但它并不总是有效。

      请注意,该策略归作者所有,因此,如果您试图以某种方式使用一个进程来备份它,而另一个进程正在写入,这将不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-19
        • 2011-03-26
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多