2017-10-06 60 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