升级后的不同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的走了,我还没有线索如何现在认识到一些指标是否损坏或不...

+1

你为什么要手动做这件事?有一个checkindex工具。或者至少你可以看看它应该做类似事情的代码。 – javanna 2013-03-19 08:42:09

+0

确实有一个我不知道的checkindex工具。我会看看它,这可能是我需要的......谢谢。 – damax 2013-03-19 12:00:14

+0

很高兴听到,我添加了我的评论作为一个新的答案。 – javanna 2013-03-20 09:26:04

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

但看着你在做什么手动,我建议你看看check index tool。它可以让你检查你的索引的健康状况,并可以选择丢弃损坏的段。如果你不能使用这个工具,你至少可以看看它的代码,看看你如何将它集成到你的应用程序中。