北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

Lucene的高亮器Highlighter

Posted on 2012-06-24 10:56  CN.programmer.Luxh  阅读(1573)  评论(0编辑  收藏  举报

  Lucene的高亮器就是给搜索关键词加上HTML标签,这样在网页上显示的时候,可以有不同的突出显示效果。

  高亮器会做两个工作:

  1)让搜索关键词突出显示。

  2)截取出现搜索关键词最多的一段文本生成摘要。

  使用高亮器需要引入两个jar文件:lucene-highlighter-3.6.0.jar和lucene-memory-3.6.0.jar。

  创建高亮器的代码: 

//配置高亮器
		
//默认使用HTML的<B>标签标记关键词
//Formatter formatter = new SimpleHTMLFormatter();
		
//以红色字体标记关键词
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
//用于高亮查询,query是Lucene的查询对象Query
Scorer scorer = new QueryScorer(query);
//创建一个高亮器
Highlighter highlighter = new Highlighter(formatter, scorer);
//设置文本摘要大小
Fragmenter fragmenter = new SimpleFragmenter(100);
highlighter.setTextFragmenter(fragmenter);

  设置要高亮显示的内容:

//从Lucene的Document对象中取出文本内容
String content =  document.get("content");
//高亮显示content
String highlighterContent = highlighter.getBestFragment(analyzer, "content", content);
			
//如果content中没有找到关键词,会返回空。
if(highlighterContent == null) {
        highlighterContent = content;
}