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