Lucene中的動態摘要
Lucene擴展中有一個HighLighter自動摘要的包。
通過調用:getBestFragments 返回一個或多個和搜索關鍵詞最相關的段落。
Fragmenter 把文本分成多個段落。
QueryScorer 計算每個段落的分值。QueryScorer只應該包含需要做高量顯示的Term。
TokenStream 通
過IndexReader中的位置信息來返回一個TokenStream,而不要再次分詞處理原文后返回TokenStream。如果
IndexReader中的Token位置有重疊,為了把冗余的Token去掉,TokenStream計算起來會麻煩一些。
Highlighter highlighter =new Highlighter(this,new QueryScorer(query)); highlighter.setTextFragmenter(new SimpleFragmenter(40)); for (int i = 0; i < hits.length(); i++) { String text = hits.doc(i).get(FIELD_NAME); int maxNumFragmentsRequired = 2; String fragmentSeparator = "..."; TermPositionVector tpv = (TermPositionVector)reader.getTermFreqVector(hits.id(i),FIELD_NAME); TokenStream tokenStream=TokenSources.getSingleTokenStream(tpv,true); String result =highlighter.getBestFragment(tokenStream,text); System.out.println("\t" + result); }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!