升级后的不同API和SegmentInfos常量Lucene从3.6到4.1
问题描述:
我正在升级Lucene引擎以将我的内容从3.6版本索引到4.1。我注意到API的一些方面已经发生了很大的变化。升级后的不同API和SegmentInfos常量Lucene从3.6到4.1
尤其是当它涉及到从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);
}
}
}
可惜的是静态常量SegmentInfos.FORMAT_DIAGNOSTICS 4.1版的Lucene的走了,我还没有线索如何现在认识到一些指标是否损坏或不...
答
在Lucene 4中确实有一些非向后兼容的变化,这是主要版本发生变化的主要原因。
但看着你在做什么手动,我建议你看看check index tool。它可以让你检查你的索引的健康状况,并可以选择丢弃损坏的段。如果你不能使用这个工具,你至少可以看看它的代码,看看你如何将它集成到你的应用程序中。
你为什么要手动做这件事?有一个checkindex工具。或者至少你可以看看它应该做类似事情的代码。 – javanna 2013-03-19 08:42:09
确实有一个我不知道的checkindex工具。我会看看它,这可能是我需要的......谢谢。 – damax 2013-03-19 12:00:14
很高兴听到,我添加了我的评论作为一个新的答案。 – javanna 2013-03-20 09:26:04