foxchang 2015-05-28 09:17 采纳率: 0%
浏览 651

Lucene 4.7.2 PersistentSnapshotDeletionPolicy

大家好,最近因项目需求,要把Lucene从之前的3.6替换到4.7.2。经测试,发现:在设置数据备份时,PersistentSnapshotDeletionPolicy没有在对应的文件路径下生成对应的备份文件,求路过大神指点迷津。
下面是声明snapshot对象的codes:

        final String backupFile = LuceneUtility.generateBackupPath(indexFilePath);
            if (backupFile != null) {
                final File bFile = new File(backupFile);

                if(!bFile.exists()){
                    bFile.mkdirs();
                }
                snapShotDir = new MMapDirectory(bFile);

                snapshotter = new PersistentSnapshotDeletionPolicy(
                        new KeepOnlyLastCommitDeletionPolicy(),
                        snapShotDir);
                // Set the snapshot policy
                indexWriterConfig.setIndexDeletionPolicy(snapshotter);
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 22:41
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    Apache Lucene 4.7.2中,PersistentSnapshotDeletionPolicy默认使用KeepOnlyLastCommitDeletionPolicy进行数据备份。此策略会保留最后提交的更改,而不是每次提交后都创建一个新版本。

    要解决你的问题,你可以尝试以下步骤:

    1. 检查你使用的索引配置是否正确。在你的indexWriterConfig中,应该有一个名为indexDeletionPolicy的字段,用于指定删除策略。如果你的索引配置中的indexDeletionPolicy不为KeepOnlyLastCommitDeletionPolicy,那么你需要将其更改为KeepOnlyLastCommitDeletionPolicy
    public class MyIndexWriterConfig extends IndexWriterConfig {
    
        @Override
        public void setIndexDeletionPolicy(PersistentSnapshotDeletionPolicy policy) {
            super.setIndexDeletionPolicy(policy);
        }
    
        // ...
    }
    
    1. 如果上述方法无效,请检查你的索引文件是否存在,并且其目录结构是否正确。确保你的索引文件被正确的复制到了新的目录中,并且所有的文件都被正确的重命名为了他们的备份名称。

    2. 如果以上两个步骤都无法解决问题,可能需要查看Lucene日志以获取更多关于异常的信息。这些信息可能会提供有关如何修复问题的具体建议。

    希望这些建议能帮助你解决问题!

    评论

报告相同问题?