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



推荐阅读
  • mysql+全文检索设计,基于sphinx+mysql全文检索架构设计.doc
    基于sphinxmysql全文检索架构设计.doc还剩2页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧& ... [详细]
  • 搜索引擎技术概论(上篇):核心原理与应用分析
    搜索引擎技术概论(上篇)探讨了搜索的基本概念及其核心原理。搜索的本质在于信息检索,即用户通过输入关键词,利用特定的算法从海量数据中快速定位并提供所需信息。本文详细分析了搜索引擎的工作机制及其在实际应用中的表现。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • Webdriver中元素定位的多种技术与策略
    在Webdriver中,元素定位是自动化测试的关键环节。本文详细介绍了8种常用的元素定位技术与策略,包括ID、名称、标签名、类名、链接文本、部分链接文本、XPath和CSS选择器。每种方法都有其独特的优势和适用场景,通过合理选择和组合使用,可以显著提高测试脚本的稳定性和效率。此外,文章还探讨了在复杂页面结构中如何灵活运用这些定位技术,以应对各种挑战。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 2015年,互联网企业人人网在产品岗位的招聘中,设置了多项笔试题目,旨在全面考察应聘者的专业能力和综合素质。本文对这些题目进行了详细解析,并提供了备考指南,帮助考生更好地准备考试。内容涵盖填空题、选择题等多种题型,重点解析了如性别偏好等社会现象的应用题,为考生提供全面的参考和指导。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 1.0为什么要做这个博客站?  在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了。而且下次再点击这个书签时,可能就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效。这样一来,也就不方便 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • 开发笔记:使用JavaScript解决网页图片拉伸问题
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用JavaScript解决网页图片拉伸问题相关的知识,希望对你有一定的参考价值。 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • ES基本原理名词解释In-memorybuffer:ES内存缓冲区,新建的document写入的地方document:索引和搜索的 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了Nutch相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 用到lucene的爬虫的简单实现
    2019独角兽企业重金招聘Python工程师标准小菜鸟我最近研究了一下lucene,以及前面的爬虫的写法,我想到能否用lucene写一个站内搜索& ... [详细]
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社区 版权所有