elasticsearch搜索关键字高亮显示
使用 elasticsearch 时,有一个很常见的需求是,能在页面上将搜索出的结果中属于关键字的文字,进行高亮显示。
elasticsearch 对这个做了一定的支持,它能查询结果的基础上,额外返回需要高亮显示关键字的整个文本,至于具体你想怎么用它,需要根据业务自行实现。
http 请求体方式
使用 kibana,直接编写 http 请求体发送查询请求。
在查询的时候,增加参数 highlight, pre_tags, post_tags。highlight 中添加需要进行高亮展示关键字的字段。
GET /data_collect/_search
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "车辆",
"fields": ["requirement", "tag"]
}
}
],
"minimum_should_match": 1
}
},
"highlight": {
"fields": {
"tag": {},
"requirement": {}
},
"pre_tags": "<span style=\"color: red\">",
"post_tags": "</span>"
}
}
查询结果中会额外返回高亮列表:
java 编程方式
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("requirement").field("tag");
highlightBuilder.preTags("<span style=\"color: red\">");
highlightBuilder.postTags("</span>");
然后把 HighlightBuilder 设置到 SearchSourceBuilder 中就行了。
查询成功后,在 SearchHit 中会返回一个 map (Map<String, HighlightField> highlightFields),里面存储了包含高亮关键字的字段以及对应的值。
值中的关键字用我们定义的 html 标签(span)包起来了,这个跟 http 请求体方式是一样的。
我这里由于需要先从数据库中数据明细,所以先把 HighlightField 缓存了起来。之后根据id,找到对应的包含高亮关键字的值,通过反射方式,把包含高亮关键字的值,设置到vo中,返回到前端。
这里用反射是因为返回的 Highlight 列表中,字段是不确定的,只有匹配的字段才会返回。如果字段一多,一个个判断有没有值,是挺麻烦的,所以用了反射。
返回给前端的结果中,包含了 html 标签:
前端展示
前端展示(这里使用vue)的时候,使用 v-html 指令来渲染文本就行,它可以渲染富文本。比如:
效果如下(这个是支持同义词的,比如这里我把"车辆"和"机动车"设置成了同义词):
elasticsearch搜索关键字高亮显示相关推荐
- html搜索时关键字变数字,JavaScript正则方法replace实现搜索关键字高亮显示
前言 正则表达式是字符串处理工具中强有力的工具.也有人认为这只是一个小玩具,但不管怎么说都离不开它. 这里介绍的是JavaScript的正则表达式的replace方法,和实现搜索关键字高亮的功能. 先 ...
- 搜索关键字高亮显示,就比微信多个多音字搜索
首先看下demo效果,下载地址 一. 需求要求实现的效果 汉字支持汉字直接搜索.拼音全拼搜索.拼音简拼搜索 搜索匹配到的关键字高亮显示 搜索结果优先显示全部匹配.其次是拼音全拼匹配.拼音简拼匹配:关键 ...
- 微信小程序 搜索 关键字 高亮显示
效果图: 将搜索结果挨个格式化为数组,然后在渲染的时候判断type是否等于1,如果等于1,那就高亮显示. 主要代码: <view class="address-title"& ...
- jq搜索关键字高亮显示
在我们平时做项目经常会遇到关键字需要高亮显示的情况,算了 不编了,写不下去了,直接看代码吧 var searchText = keyword;//获取你输入的关键字:var regExp = new ...
- uniapp 搜索关键字高亮显示实现
其实是就是个正则表达式啊,主要还是得看后端返回的是什么数据,你才可以根据后端去更改即可. 显示:
- ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
应用说明见代码注解. 1.简单搜索实例展示: public void search() throws IOException {// 自定义集群结点名称String clusterName = &qu ...
- 搜索关键字高亮_SpringBoot+Mybatis-Plus+Elasticsearch 实现关键字搜索高亮展示
一.概述&介绍 Elasticsearch:Elasticsearch 是基于Lucense 技术的搜索引擎(服务器),将数据进行缓存再进行查询. 与数据库查询的比较: (1)相当于sql ...
- vue element el-table 表格搜索 搜索表格内容关键字标红 关键字高亮显示
vue element el-table 表格搜索 搜索表格内容关键字标红 关键字高亮显示 最近公司项目需求,搜索表格的内容,并且需要搜索的关键字高亮显示(关键字标红),如图所示最终效果: 1.在需要 ...
- 前端Vue开发,多关键字搜索时,搜索结果高亮显示(解决输入英文时,会错误的把html标签渲染的问题)
问题背景: 网上搜索关于搜索结果高亮显示,基本上都是单一关键字搜索,或者多关键字搜索,但是没有解决 输入英文字符时,把html标签渲染出来的问题,比如在进行多关键字搜索时,可能会进行a;s的搜索, 就 ...
最新文章
- 排序算法二:归并排序(Merge sort)
- 阅读笔记 1 火球 UML大战需求分析
- centos7 iptables 端口转发 保存_Linux 开发笔记《如何在CentOS 7上启动和启用Firewalld》...
- 信息学奥赛一本通C++语言——1062:最高的分数
- 俞敏洪吹的牛破了?首场直播带货后 新东方股价大跌
- 【Flink】FLink SQL TableException: Table sink doesn‘t support consuming update changes which is
- sql server 优化_SQL Server中很少有外行优化
- 中文分词软件SCWS
- 深度学习2.0-24.过拟合与欠拟合
- CSS 7阶层叠水平
- 使用dsoFramer开始Office应用程序
- ZeroMQ XPub/XSub模式
- MYSQL数据库ANY的用法_数据库——IN、ANY、SOME 和 ALL 操作符的使用
- 计算机学院 储昭坤,计算机与信息学院“紫罗兰”团队开展志愿服务活动
- 洛谷 P1144 最短路计数 dijkstra
- ThinkPHP3.2.3 实现微信小程序微信授权登录
- 禅道 php7.1,Centos7安装PHP7 + 禅道(Nginx 1.18 + PHP7.2)
- 【AE表达式】300多个人名正从宇宙中飞来……
- 未能导入activex控件,请确保它正确注册的完美解决方案
- UINavigation导航栏和UITabbar布局和样式
热门文章
- 【兼职避坑篇】怎么找到靠谱的客服兼职工作
- 2017年前端面试题整理汇总100道题
- 2012-09-08开讲啦 王石《坚持与放下》
- 自动检测U盘autorun.inf专杀
- 为什么电脑不能安全关闭计算机,电脑执行关机命令后,不能自动切断电源,而是在屏幕上显示“您可以安全关闭计算机”...
- 云易绘教育:画人体的3个常见误区
- BTBU 2021春季 自动化 自动识别技术实验记录(1)
- TFS2018-WIK介绍03-VSTS的特有功能,TFS2018中没有的功能
- 图形可视化1:Seaborn之lmplot函数
- linux系统下如何切换到root用户