Lucene高亮显示内容
1 public String highlight(Query query,String filedname,String text){ 2 try { 3 QueryScorer queryScorer=new QueryScorer(query); 4 Fragmenter fragmenter=new SimpleSpanFragmenter(queryScorer); 5 Formatter formatter=new SimpleHTMLFormatter("<strong>", "</strong>"); 6 Highlighter highlighter=new Highlighter(formatter,queryScorer); 7 highlighter.setTextFragmenter(fragmenter); 8 String str=highlighter.getBestFragment(new MMSegAnalyzer(), filedname, text); 9 return str; 10 } catch (IOException e) { 11 e.printStackTrace(); 12 } catch (InvalidTokenOffsetsException e) { 13 e.printStackTrace(); 14 } 15 return text; 16 }
1 public void search(String word){ 2 try { 3 IndexSearcher searcher=Utils.getIndexSearcher(); 4 MultiFieldQueryParser parser=new MultiFieldQueryParser(Version.LUCENE_35, new String[]{"title","summary"}, new MMSegAnalyzer()); 5 Query query=parser.parse(word); 6 TopDocs topDocs=searcher.search(query, 200); 7 ScoreDoc[] docs=topDocs.scoreDocs; 8 for(ScoreDoc s:docs){ 9 Document d=searcher.doc(s.doc); 10 System.out.println(this.highlight(query,"title", d.get("title"))); 11 System.out.println(this.highlight(query,"summary",d.get("summary"))); 12 } 13 } catch (CorruptIndexException e) { 14 e.printStackTrace(); 15 } catch (ParseException e) { 16 e.printStackTrace(); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 }
@Test public void testHighlight02(){ hl.search("百度"); }