上篇文章介绍了solrj的简单用法,这篇文章进一步介绍一下solr的高亮功能。


高亮的原理其实就是在查询到的结果中,直接在需要高亮的数据前后添加html标签,
从而实现高亮显示。
那么我们只需要设置需要高亮的字段,
同时设置高亮数据前后需要添加的html标签即可。
下面是一次简单高亮查询:

SolrQuery query = new SolrQuery();
query
//设置高亮显示
.setHighlight(true)
//设置需要高亮的字段
.addHighlightField("product_name")
//设置高亮字段前添加的标签
.setHighlightSimplePre("<em style=\"color:#ff6600\">")
//设置高亮字段后添加的标签
.setHighlightSimplePost("</em>");

查询后,solrj会返回一个结构如下的Map作为高亮结果。

Map<String, Map<String, List<String>>> highLightMap = response.getHighlighting();

这个map实际上是一个id->每条数据的数据结构,
每条数据又是一个结构为

Map<String, List<String>>

的Map,这个Map里保存了每个需要高亮字段的高亮结果,
因此我们只需要根据每条数据的id找到这条数据的高亮Map,
再从这个高亮map里取出相应高亮字段的结果,替换进查询结果中即可。

下面是处理高亮结果的过程

try{   //查询QueryResponse response = solrserver.query(query);//获取查询结果列表SolrDocumentList list = response.getResults();//获取高亮结果!Map<String, Map<String, List<String>>> highLightMap = response.getHighlighting();Map<String, List<String>> map = null;String fieldName = "product_name"; for (SolrDocument solrDocument : list){   //根据每条数据的id获取其高亮处理后的数据map = highLightMap.get(solrDocument.getFieldValue("id"));solrDocument.setField(fieldName, map.get(fieldName).get(0));//获取想要的字段System.out.println("高亮后的字段值:"+solrDocument.getFieldValue(fieldName));}} catch (SolrServerException e){e.printStackTrace();}

最后附上控制台打印的结果

ps:如下代码中,get(0)获得的就是相应字段的高亮结果,不知道这个list在什么情况下里面会有多个结果,如果有朋友知道还望赐教

//根据每条数据的id获取其高亮处理后的数据map = highLightMap.get(solrDocument.getFieldValue("id"));solrDocument.setField(fieldName, map.get(fieldName).get(0));

solrj高亮功能简单应用相关推荐

  1. lucene4.7 高亮功能(八)

    2019独角兽企业重金招聘Python工程师标准>>> lucene4.7 高亮功能(八) 博客分类: 搜索引擎,爬虫 java 高亮功能一直都是全文检索的一项非常优秀的模块,在一个 ...

  2. 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. image.png 前言 数据时代,数据的多源集成 ...

  3. python日历下拉框_Python版的农历日历Calendar,功能简单

    1.[代码][Python]代码 Python语言: Python版的农历日历Calendar,功能简单 #coding=utf-8 #代码修改自wangfei(wangfei@hanwang.com ...

  4. Qt 2D绘图功能简单总结

    文章目录 Qt 2D绘图功能简单总结 Qt 2D绘图功能简单总结 Qt 的绘图功能非常强大,它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以用来绘制文本和图片. Qt的绘图系统 ...

  5. 使用prismjs为网站添加代码高亮功能

    prismjs 是一款轻量.可扩展的代码语法高亮库,使用现代化的 Web 标准构建,使用 Prismjs 可以快速为网站添加代码高亮功能,支持超过113中编程语言,还支持多种插件,是简洁.高效的代码高 ...

  6. html 12306页面实现,jQuery模拟12306城市选择框功能简单实现方法示例

    本文实例讲述了jQuery模拟12306城市选择框功能简单实现方法.分享给大家供大家参考,具体如下: www.jb51.net jQuery城市选择框 #parent{ width:500px; po ...

  7. python密码登录程序三次_Python实现账号密码输错三次即锁定功能简单示例

    本文实例讲述了Python实现账号密码输错三次即锁定功能.分享给大家供大家参考,具体如下: 初学Python-1 #实现账号输错三次即锁定 user = "hubery" pass ...

  8. 多人审批功能简单实现

    文章目录 前言 一.数据库设计 2.实现逻辑 前言 多人审批功能简单实现 一.数据库设计 流程表 CREATE TABLE `system_flow` (`id` int NOT NULL AUTO_ ...

  9. QT QTextEdit富文本插入字体-表格-编号-图片-查找-语法高亮功能

    QT QTextEdit富文本插入字体-表格-编号-图片与查找功能,输入char 自动变成蓝色-语法高亮功能 QTQTextEdit富文本插入字体-表格-编号-图片-查找-语法高亮功能.rar-QT文 ...

最新文章

  1. android wear升级方法,LG G Watch官方工具包刷Android wear5.1.1教程(附刷机包)
  2. PDF文件合并使用什么工具
  3. Linux查看ice版本,Linux下ICE的安装
  4. APPSERV下安装pear db和auth
  5. 点在多边形内外的判断【计算几何】
  6. 艾伟:自己实现memcached客户端库
  7. python---set集合
  8. c语言可不可以不要.cpp文件,[求助]一个头文件和CPP文件的问题
  9. 使用STL标准模板库实现的个人通讯录
  10. 如何用matlab编辑热方程,MATLAB编辑一维热传导方程的模拟程序
  11. 计算机的音乐怎么调,电脑怎么调整音频设备属性
  12. 5配置单臂路由器 VLAN 间路由
  13. matlab求函数在区间内最大值与最小值
  14. 什么是显示器的分区背光?侧入式背光与直下式背光有什么区别?什么是Mini LED背光?Micro LED又是什么?
  15. 网站打开慢解决办法——在Google Chrome浏览器中安装ReplaceGoogleCDN插件
  16. Mathematica 取整函数
  17. QT应用之透明背景_嵌入式freambuffer_QWS背景淡绿色问题
  18. 小心黑客入侵,六种黑客入侵手机的常见方式
  19. Linux运维必须掌握的27道面试题
  20. 机器学习(周志华)-支持向量机课后习题:

热门文章

  1. 成都电子计算机职业中学,成都蜀兴计算机职业中学2020年招生录取分数线
  2. pm2显示查询sql_作为PM液态SQL的技术贡献
  3. 2021年G2电站锅炉司炉复审考试及G2电站锅炉司炉作业考试题库
  4. vhost-user 分析1
  5. html自动回复功能,outlook2016设置自动回复
  6. IntelliJ IDEA字母 、符号格式异常的解决方案
  7. NetStream 记录
  8. java代码验证身份证号码经典版
  9. Java通过正则表达式判断字符串当中是否有特殊符号
  10. 100小时学SAP SD后台配置清单