Lucene —— 搜索结果高亮显示
2016-02-23 21:09
483 查看
零. 前言
谷歌、 百度的搜索结果在关键词命中的时候会高亮显示(飘红), Lucene 也提供了高亮显示的实现, 借助 Lucene 的 Highlighter 类可以快速实现搜索结果高亮。
一. 代码示例
本例使用 Lucene 5.3.1 的包
二. 运行结果
执行成功 ,china 关键词成功加上了 <font> 标签
谷歌、 百度的搜索结果在关键词命中的时候会高亮显示(飘红), Lucene 也提供了高亮显示的实现, 借助 Lucene 的 Highlighter 类可以快速实现搜索结果高亮。
一. 代码示例
本例使用 Lucene 5.3.1 的包
package com.wenniuwuren.lucene; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.highlight.Highlighter; import org.apache.lucene.search.highlight.QueryScorer; import org.apache.lucene.search.highlight.SimpleHTMLFormatter; import org.apache.lucene.search.highlight.SimpleSpanFragmenter; import java.io.StringReader; /** * 搜索结果高亮显示: 整体思路就是找到关键词, 然后在关键词两侧加入渲染标签, 达到高亮效果 * Created by wenniuwuren on 16/2/22. */ public class HighlightTest { public static void main(String args[]) { try { // 将被处理的文本 String searchResult = "chinese live in china"; // 创建查询 Query query = new TermQuery(new Term("country", "china")); // 对于符合条件的结果进行 score QueryScorer queryScorer = new QueryScorer(query, "country"); // 自定义高亮格式 SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>", "</font>"); Highlighter highlighter = new Highlighter(simpleHTMLFormatter, queryScorer); // 设置片段插入信息 highlighter.setTextFragmenter(new SimpleSpanFragmenter(queryScorer)); // 分词器, 这个只能分英文 StandardAnalyzer analyzer = new StandardAnalyzer(); // 结果处理 TokenStream tokenStream = analyzer.tokenStream("country", new StringReader(searchResult)); String finalResult = highlighter.getBestFragment(tokenStream, searchResult); System.out.println(finalResult); } catch (Exception e) { e.printStackTrace(); } } }
二. 运行结果
执行成功 ,china 关键词成功加上了 <font> 标签
相关文章推荐
- Java设计模式菜鸟系列(七)命令模式建模与实现
- Tool bar
- vector资料
- Android四大启动模式
- restful API设计思想
- ...
- sgu499
- 转自百度百科
- 【Android】Cannot reload AVD list问题
- iOS的主要框架介绍
- canvas and bitmap 比较不错的文章分享下
- Learn Unity - Scripts(中级教程)
- 【Android】Toast显示乱码解决办法
- mysql按条件查询当条件是数字的时候加不加引号是一样的。
- 【面试】基于二叉树层次遍历相关问题的求解
- python中的reduce介绍:
- 在显示屏的编程中出现一些知识点------fb_fix_screeninfo 和 fb_var_screeninfo
- [Usaco2015 FEB Gold][2016-2-21]考试总结
- 1041. 考试座位号
- Activity绑定自定义视图