热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

Lucene——搜索结果高亮显示

零.前言谷歌、百度的搜索结果在关键词命中的时候会高亮显示(飘红),Lucene也提供了高亮显示的实现,借助Lucene的Highlighter类可以快速实现搜索结果高亮。一.代码示
零. 前言 谷歌、 百度的搜索结果在关键词命中的时候会高亮显示(飘红), 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("", "");

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 关键词成功加上了 标签



推荐阅读
author-avatar
多伦多打折优惠信息_205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有