合并lucene 6.2索引:NoSuchMethodError:org.apache.lucene.index.SegmentInfo

时间:2016-09-25 15:13:26

标签: exception merge lucene

我写了一个代码来合并lucene索引。这是代码:

Analyzer analyzer = new ArabicTweetAnalyzer(true,true,true,true);
        IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
        indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
        Directory fullIndexDirectory = FSDirectory.open(Paths.get(args[0]));        
        IndexWriter iWriter = new IndexWriter(fullIndexDirectory, indexWriterConfig);
        File indexesDir = new File(args[1]);
        File[] indexesFiles = indexesDir.listFiles();
        Directory[] indexes = new Directory[indexesFiles.length];
        for (int i = 0; i < indexesFiles.length; i++) {
            indexes[i] = FSDirectory.open(Paths.get(indexesFiles[i].getAbsolutePath()));
        }

        System.out.println("Merging...");
        iWriter.addIndexes(indexes);

我在课程路径中添加了以下jar:

  • lucene的核 - 6.2.0.jar
  • lucene-analyzers-common-6.2.0.jar
  • lucene的后向编解码器-6.2.0.jar
  • 的lucene的编解码器-6.2.0

当我运行程序时,我得到了这个例外:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.lucene.index.SegmentInfo.<init>(Lorg/apache/lucene/store/Directory;Lorg/apache/lucene/util/Version;Ljava/lang/String;IZLorg/apache/lucene/codecs/Codec;Ljava/util/Map;[BLjava/util/Map;Lorg/apache/lucene/search/Sort;)V
    at org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat.read(Lucene62SegmentInfoFormat.java:198)
    at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:362)
    at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:493)
    at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:490)
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:731)
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:683)
    at org.apache.lucene.index.SegmentInfos.readLatestCommit(SegmentInfos.java:490)
    at org.apache.lucene.index.IndexWriter.addIndexes(IndexWriter.java:2487)
    at _general.LuceneIndexesMerger.main(LuceneIndexesMerger.java:36)
    Suppressed: org.apache.lucene.index.CorruptIndexException: checksum passed (4283f417). possibly transient resource issue, or a Lucene or JVM bug (resource=BufferedChecksumIndexInput(MMapIndexInput(path="D:\indexes\1\_0.si")))
        at org.apache.lucene.codecs.CodecUtil.checkFooter(CodecUtil.java:379)
        at org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat.read(Lucene62SegmentInfoFormat.java:203)
        ... 8 more

我不知道为什么我得到这个异常以及缺少哪些jar文件! 任何提示?

0 个答案:

没有答案