2013-03-18 86 views
0

我正在升級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

回答

0

在Lucene 4中確實有一些非向後兼容的變化,這是主要版本發生變化的主要原因。

但看着你在做什麼手動,我建議你看看check index tool。它可以讓你檢查你的索引的健康狀況,並可以選擇丟棄損壞的段。如果你不能使用這個工具,你至少可以看看它的代碼,看看你如何將它集成到你的應用程序中。

相關問題