首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

(转)lucene高亮展示

2013-02-24 
(转)lucene高亮显示 .01.//首先获取docId的TokenStream02.TokenStream tokenStreamTokenSources.getAnyTo

(转)lucene高亮显示 .
01.//首先获取docId的TokenStream 02.TokenStream tokenStream=TokenSources.getAnyTokenStream(reader, docId, field, analyzer); 03.//构建Fragmenter对象,用于文档切片 04.Fragmenter fragmenter = new SimpleFragmenter(100);//默认字符为100 05.//构建Scorer,用于选取最佳切片 06.Scorer fragmentScore = new QueryScorer(query); 07.//构建Formatter格式化最终显示(将字体颜色设置为红色) 08.Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>"); 09.//实例化Highlighter组件 10.Highlighter highlighter = new Highlighter(formatter,fragmentScore); 11.highlighter.setTextFragmenter(fragmenter); 12.// 最后一步,获取hightlightText 13.highlighter.getBestFragment(tokenStream, text);//第二个参数为原始文档信息

?

FastVectorHighlighter使用示例:

?

  1. //构造Highlighter组件 ??FragListBuilder?fragListBuilder?=?new?SimpleFragListBuilder();??
  2. FragmentsBuilder?fragmentBuilder?=new?ScoreOrderFragmentsBuilder(??????????????????BaseFragmentsBuilder.COLORED_PRE_TAGS,??
  3. ????????????????BaseFragmentsBuilder.COLORED_POST_TAGS);??FastVectorHighlighter?highligher=new?FastVectorHighlighter(true,?true,fragListBuilder,?fragmentBuilder);??
  4. //构造FieldQuery ??Query?query=new?QueryParser(...).parse(...);??
  5. FieldQuery?fieldQuery?=?highlighter.getFieldQuery(query);??//高亮最佳文档切片 ??
  6. highlighter.getBestFragment(fieldQuery,?IndexReader?reader,?int?docId,?String?field,?int?fragCharSize);//fragCharSize需要大于18??

?

注意:使用FastVectorHighlighter,在创建索引时,必须要为field指定TermVector.WITH_POSITIONS_OFFSETS和Store.YES属性

热点排行