0

我正在升级 Lucene 引擎,以便将我的内容从 3.6 版索引到 4.1 版。我注意到 API 的某些方面已经发生了很大变化。

特别是当涉及到来自 SegmentInfos 类的静态常量时......

我的旧代码使用以下代码来检测损坏的索引。如果有,则删除 Lucene 二进制文件:

for (String name : fileNames) {
    if (name != null && name.startsWith("segments_")) {
        IndexInput input = dir.openInput(name);
        int format = input.readInt();
        input.close();
        if (format != SegmentInfos.FORMAT_DIAGNOSTICS) {
            LOG.info(String.format("File %s is corrupted and it will be deleted", name));
            dir.deleteFile(name);
            }
        }
    }

不幸的是,Lucene 4.1 版本中的静态常量 SegmentInfos.FORMAT_DIAGNOSTICS 消失了,我不知道现在如何识别某些索引是否已损坏......

4

1 回答 1

0

Lucene 4 中确实有一些不向后兼容的变化。这就是主要版本发生变化的主要原因。

但是看看你手动做的事情,我建议你看看check index tool。它允许您检查索引的运行状况并可选择删除损坏的段。如果您不能使用该工具本身,您至少可以查看它的代码并了解如何将其集成到您的应用程序中。

于 2013-03-20T09:25:47.963 回答