Lucene中的動態摘要

jopen 11年前發布 | 24K 次閱讀 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!