try {
QueryScorer queryScorer=new QueryScorer(query);
Fragmenter fragmenter=new SimpleSpanFragmenter(queryScorer);
Formatter formatter=new SimpleHTMLFormatter("<strong>", "</strong>");
Highlighter highlighter=new Highlighter(formatter,queryScorer);
highlighter.setTextFragmenter(fragmenter);
String str=highlighter.getBestFragment(new MMSegAnalyzer(), filedname, text);
return str;
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidTokenOffsetsException e) {
e.printStackTrace();
}
return text;
}
public void search(String word){
try {
IndexSearcher searcher=Utils.getIndexSearcher();
MultiFieldQueryParser parser=new MultiFieldQueryParser(Version.LUCENE_35, new String[]{"title","summary"}, new MMSegAnalyzer());
Query query=parser.parse(word);
TopDocs topDocs=searcher.search(query, 200);
ScoreDoc[] docs=topDocs.scoreDocs;
for(ScoreDoc s:docs){
Document d=searcher.doc(s.doc);
System.out.println(this.highlight(query,"title", d.get("title")));
System.out.println(this.highlight(query,"summary",d.get("summary")));
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test public void testHighlight02(){ hl.search("百度"); }