从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上。该索引是使用以前的版本构建的!
任何想法为什么?
答案 0 :(得分:0)
您需要使用此类升级索引: http://lucene.apache.org/core/4_7_0/core/org/apache/lucene/index/IndexUpgrader.html
索引文件基本上带有编解码器信息,代码头带有版本号信息。这需要为Lucene 4.7编解码器的IndexReaders升级才能读取索引。