2017-10-06 30 views
0
 QueryScorer queryScorer = new QueryScorer(query, "title"); 
     Fragmenter fragmenter = new SimpleSpanFragmenter(queryScorer); 

     Highlighter highlighter = new Highlighter(queryScorer); // Set the best scorer fragments 
     highlighter.setTextFragmenter(fragmenter); // Set fragment to highlight    

     SearchFactory searchFactory = fullTextEntityManager.getSearchFactory(); 
     IndexReader indexReader = searchFactory.getIndexReaderAccessor().open(SearchResult.class);   
     indexSearcher = new IndexSearcher(indexReader); 
     // STEP C 
     System.out.println(""); 
     ScoreDoc scoreDocs[] = indexSearcher.search(query, 20).scoreDocs; 
     for (ScoreDoc scoreDoc : scoreDocs) { 
      Document document = indexSearcher.doc(scoreDoc.doc); 
      String title = document.get("title"); 
      TokenStream tokenStream = analyzer.tokenStream("title", new StringReader(title)); 
      LOG.info(String.format("TEXTE BRUT: %s", title)); 
      String fragment = highlighter.getBestFragments(tokenStream, title, 3, "..."); 
      LOG.log(Level.INFO, "--------- FRAGMENT search : ", fragment); 

突出成绩我有这样的错误,我试图让在突出显示的结果:使用Lucene

无法定义类org.apache.lucene.search.highlight.TermVectorLeafReader在模块“deployment.dev-1.0。 war:main“from Service Module Loader:java.lang.VerifyError:

无法链接org/apache/lucene/search/highlight/TermVectorLeafReader(模块”deployment.scob-1.0.war:main“from Service Module Loader ):class org.apache.lucene.search.highlight.TermVectorLeafReader重写最终方法术语。(Ljava/lang/String;)Lorg/apache/lucene/index/Terms;

+0

我猜这是在WildFly上?这些库的哪个版本?如果您提供具体的信息,我们可能会改进答案。 – Sanne

回答

0

当使用与预期版本的Apache Lucene不兼容的Highlighter版本时,您将获得这样的VerifyError

验证您的应用服务器正在使用哪个版本的Lucene并获取匹配的荧光笔版本。

+0

对!它工作得很好!我将我的lucene从7.0.0更改为5.5.4,这适用于hibernate-search 5.8.0(在我的情况下)。谢谢 ! – ambefr