2017-05-04 8 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. 미안해, 내 영어로.

답변

1

NoClassDefFoundError은 클래스가 클래스 경로에 없다는 것을 의미하므로 추가하기 위해 추가해야하는 병을 알아야합니다. MemoryIndex의 내용은 다음과 같습니다. lucene-memory-x.x.x.jar

그런데 한 눈에 당신이 제공 한 코드에는이 예외가 표시되지 않습니다.

관련 문제