不同的API&将Lucene从3.6升级到4.1后的SegmentInfos常量

时间:2013-03-18 14:44:17

标签: java lucene

我正在升级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消失了,我还不知道如何识别某个索引是否已损坏...

1 个答案:

答案 0 :(得分:0)

Lucene 4确实存在一些非向后兼容的变化。这是主要版本发生变化的主要原因。

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