Lucene 2.4.0を発行して検索結果にハイライトを表示するコードです.

11620 ワード

ハイライト表示を使用する場合は、単独でlucene-highlighter-2.4.5.jarを導入する必要があります.このjarはカタログに含まれています. lucene-24.0\contrib\highlighterでは、プロジェクトのbinフォルダにコピーし、Java Build Pathにその参照を追加します.次のページを参照できます.
http://www.javaeye.com/wiki/topic/73588
http://hi.baidu.com/lotusxyhf/blog/item/cc06f634558516b4d0a2d329.html
導入されたパッケージには、
1

import
 org.apache.lucenel.search.highlight.Highlighter;
2

import
 org.apache.lucene.search.highlight.QueryScoorer;
3

import
 org.apache.lucenel.search.highlight.SimpleFramenter;
4

import
 org.apache.lucene.search.highlight.SimpleHTMLFormater;
 
Highlighterを使用した検索コード:
 1


    
/** */
/** 2     * search method 3     */
 4
    
prvate
 
void
 search()

{ 5        try  { 6            IndexSearcher searcher = new IndexSearcher(path) 7            //Query query= wildcardQuery(); 8            //Query query = phraseQuery(); 9            //Query query = bootleanQuery();10            Query query = queryPaser()//検索内容11            TopDocCollector collector = new TopDocCollector(10)、12            searcher.search(query,collector);13            スコアダウン[] ホワイト = collectop Docs().scorodocs;1415            //ハイライト表示設定16            Highlighter highlighter = null;17            Simple HTMLFormater シンプルHTMLFormater = new Simple HTMLFormater("            highlighter = new Highlighter(simple HTML Formater,new QuerySchorer       19            highlighter.set Text Fragmenter(new) Simple Fragmenter(200)、//この100はキーワード文字列のcontextの長さを指定しているので、自分で設定してもいいです.全編の本文内容2021            Dcument doc;22            for(int i=0;i<hits.length;i+){2324・                System.out.printel(hits[i].doc);25                System.out.printel(hits[i].score);26                //文書の内容を印刷する27                doc = searcher.doc(hits[i].doc)、28                System.out.println(doc.toString();29                //ハイライト30                TokenStream tokenStream =new MMAnalyzer().tokenStream(token) new StringReader(doc.get);31                System.out.println(highlighter.get BestFragment)、32                //APIを調べていませんが、まずcontentドメインのテキストをReaderタイプに包装し、MMAnalyzerのtokenStreaメソッドを呼び出して分詞します.分詞の結果はoffset情報を持っています.そしてhighlighterオブジェクトのget BestFragmentメソッドを使って、query条件に合致する分詞をテキストの中にハイライト33・4591676・            } 34                         35        } catch (Exception e)  {36.            // TODO Auto-generated catch block 37            e.print StockTrace();38        }          39    }
 
ついでに、getBestFragment関数のAPIを追加します.
get BestFragment
public final String getBestFragment(TokenStream tokenStream,

String text)

throws IOException
Highlights chorsen terms in text,extracting the most relevant section.The document text is analys in chunks to recorded statistics the document.After accumutlating stats,the frangement with the ghest scorts
 
パラメータ:tokenStream-a stream of tokensidentifed in the texxparameter、including ofset information.Thisisisisistypicacalyproduced byananananlyzurre- parsrsing a document's texxt.Some work may be done on on on retrtrininininintrtrininininving Tokeininininininininininininininininininininininininininininininininininststststststststststininininininininininininininininininininininininininininininininininininininint currentlyavailable(as of Lucene 1.4 rc 2)text-text to highlight terms in
Returns:
highlighted text fragment or null ifのterms found
Throws:IOExceptionこのJarパッケージはJE-Analyzer 1.5.1または他の中国語の分類ツールを使って、インターネットからダウンロードできます.基本的な使い方はStandard Analyzerと似ています.