Apache Lucene从4.6.0更新到4.7.0 - corruptindexexception编解码器头不匹配

时间:2014-03-05 12:02:02

标签: java lucene

从4.6升级apache lucene之后。到4.7。我得到了例外:

ERROR 05.03.14 12:55:18.567  com.bla.bla.bla.SearchQueryServiceLuceneImpl@init: error building dictionary
    org.apache.lucene.index.CorruptIndexException: codec header mismatch: actual header=-680782077 vs expected header=1071082519 (resource:                       org.apache.lucene.store.InputStreamDataInput@519f6b)
    at org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:128)
    at org.apache.lucene.util.fst.FST.<init>(FST.java:318)
    at org.apache.lucene.util.fst.FST.<init>(FST.java:304)
    at org.apache.lucene.search.suggest.analyzing.AnalyzingSuggester.load(AnalyzingSuggester.java:590)
    at org.apache.lucene.search.suggest.Lookup.load(Lookup.java:175)

当我执行以下操作时

        File dictFile = new File(getLuceneIndexFilePath().getCanonicalPath()+File.separator+"LSG_Dictionary.dic");
        LOG.debug("expecting Lucene dictionary here: " + dictFile.getAbsolutePath());
        suggester.load(new FileInputStream(dictFile));
        LOG.debug("loaded existing dictionary");

在加载Functioncall上。该索引是使用以前的版本构建的!

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

您需要使用此类升级索引: http://lucene.apache.org/core/4_7_0/core/org/apache/lucene/index/IndexUpgrader.html

索引文件基本上带有编解码器信息,代码头带有版本号信息。这需要为Lucene 4.7编解码器的IndexReaders升级才能读取索引。