2017-05-04 3 views
0

Lucene Highlighterに問題があります。私はStackoverflowと他のコードでいくつかのコードを見つけましたが、このコードは私のプログラムでは動作しません。これは検索とハイライトの単語を試してみる方法ですが、何かを検索すると例外が出ます。Lucene Highlighter TokenStream例外

方法:

private static void useIndex(String query, String field, String option) 
      throws ParseException, CorruptIndexException, IOException, InvalidTokenOffsetsException { 
     // StandardAnalyzer analyzer = new StandardAnalyzer(); 
     Query q = new QueryParser(field, analyzer).parse(query); 

     int hitsPerPage = 5; 

     IndexReader reader = DirectoryReader.open(index); 
     IndexSearcher searcher = new IndexSearcher(reader); 

     TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage); 

     searcher.search(q, collector); 

     ScoreDoc[] hits = collector.topDocs().scoreDocs; 

     SimpleHTMLFormatter htmlFormatter = new SimpleHTMLFormatter(); 
     Highlighter highlighter = new Highlighter(htmlFormatter, new QueryScorer(q)); 

     // display results 
     System.out.println("Found " + hits.length + " hits for " + query); 
     for (int i = 0; i < hits.length; ++i) { 
      int docId = hits[i].doc; 
      Document d = searcher.doc(docId); 
      String docURL = d.get("url"); 
      String docContent = d.get("content"); 

      TokenStream tokenStream = TokenSources.getAnyTokenStream(reader, docId, "content", analyzer); 
      TextFragment[] frag = highlighter.getBestTextFragments(tokenStream, docContent, false, 4); 

      String docFrag=""; 

      if ((frag[0] != null) && (frag[0].getScore() > 0)) { 
       docFrag=frag[0].toString(); 
      } 
      model.addRow(new Object[] { docURL, findSilimar(docId), docFrag }); 
     } 
     reader.close(); 
    } 

例外:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex 
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.index.memory.MemoryIndex 

は、私はすべてを試みたが、私が間違っているかわかりません。

P.S.私の英語には申し訳ありません。

答えて

1

NoClassDefFoundErrorはクラスがクラスパスにないことを意味するので、追加する必要があるjarを把握する必要があります。 MemoryIndexの内容は次のとおりです:lucene-memory-x.x.x.jar

ところで、一見すると、あなたが提供したコードにこの例外がスローされることはありません。

関連する問題