我正在升级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消失了,我还不知道如何识别某个索引是否已损坏...
答案 0 :(得分:0)
Lucene 4确实存在一些非向后兼容的变化。这是主要版本发生变化的主要原因。
但是看看你手动做什么,我建议你看一下check index tool。它允许您检查索引的运行状况,并可选择删除损坏的段。如果您无法使用该工具本身,您至少可以查看其代码,并了解如何将其集成到您的应用程序中。