当前位置: 首页 > news >正文

elasticsearch14-高亮

请添加图片描述
个人名片:

博主:酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 四、黑马旅游案例
    • 5. 高亮

四、黑马旅游案例

Elasticsearch的高亮(Highlight)是搜索结果中高亮显示匹配关键词或短语的位置。
高亮的主要作用是突出显示搜索结果中与查询关键词或短语匹配的部分,以便用户可以更快速、准确地找到所需内容。高亮还可以帮助搜索引擎理解查询意图,提高搜索的准确性和效率。
Elasticsearch的高亮优势有以下几点:

  • 高亮方式在处理大字段时有较大优势,占用空间较小。
  • 高亮方式在实时分词速度小于磁盘读随机取速度时具有明显优势。
  • 高亮方式可以支持多段高亮。
  • 高亮方式可以自定义标签和样式。
  • 高亮方式可以设置高亮位置。

5. 高亮

在Elasticsearch中,可以使用高亮功能对搜索结果进行高亮显示,以突出匹配的关键词或短语。下面是一些关于Elasticsearch中高亮处理的介绍:

  • 高亮字段 高亮字段是在搜索结果中高亮显示匹配关键词或短语的位置。可以通过在查询中指定高亮字段来实现。

  • 高亮标识 高亮标识用于指定高亮字段的前缀和后缀,以标识匹配的关键词或短语。可以通过在查询中的highlight参数中指定pre_tags和post_tags来实现。
    我们使用< em>标签作为高亮标识的前缀,使用< /em>标签作为高亮标识的后缀。查询结果将使用这些标签对匹配字段进行高亮显示。

  • 高亮排序 高亮排序用于指定高亮字段在搜索结果中的排序方式。可以通过在查询中的highlight参数中指定order来实现。使用score作为高亮排序方式,即按照与关键词的匹配程度对高亮字段进行排序。Elasticsearch默认使用score作为排序方式。

除了上述高亮处理的功能外,Elasticsearch还提供了其他高级的高亮功能,例如多段高亮、高亮片段、高亮聚合等。

修改buildBasicQuery

private void buildBasicQuery(RequestParams params, SearchRequest request) {BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();String key = params.getKey();if (key == null || "".equals(key)) {boolQuery.must(QueryBuilders.matchAllQuery());}else {boolQuery.must(QueryBuilders.matchQuery("all", key));}String city = params.getCity();if (city != null && !"".equals(city)){boolQuery.filter(QueryBuilders.termQuery("city", city));}String brand = params.getBrand();if (brand != null && !"".equals(brand)){boolQuery.filter(QueryBuilders.termQuery("brand", brand));}String starName = params.getStarName();if (starName != null && !"".equals(starName)){boolQuery.filter(QueryBuilders.termQuery("starName", starName));}Integer maxPrice = params.getMaxPrice();Integer minPrice = params.getMinPrice();if (maxPrice != null && minPrice != null) {boolQuery.filter(QueryBuilders.rangeQuery("price").gte(minPrice).lte(maxPrice));}String location = params.getLocation();if (location != null && !"".equals(location)){request.source().sort(SortBuilders.geoDistanceSort("location", new GeoPoint(location)).order(SortOrder.ASC).unit(DistanceUnit.KILOMETERS));}String sortBy = params.getSortBy();if (sortBy.equals("score")){request.source().sort(sortBy, SortOrder.DESC);}else if (sortBy.equals("price")){request.source().sort(sortBy, SortOrder.ASC);}FunctionScoreQueryBuilder functionScoreQuery =QueryBuilders.functionScoreQuery(boolQuery,new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery("isAD", true),ScoreFunctionBuilders.weightFactorFunction(10))});request.source().query(functionScoreQuery);int page = params.getPage(), size = params.getSize();request.source().from((page-1)*page).size(size);request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
}

总结:

Elasticsearch高亮功能详解:原理、应用与优化
一、高亮功能简介
在Elasticsearch中,高亮功能是一种用于突出显示搜索结果中关键词或短语位置的方法。通过高亮,用户可以快速识别文档中与搜索查询相关的内容,提高搜索效率和准确性。高亮功能还能帮助搜索引擎理解用户查询意图,从而为用户提供更相关的搜索结果。
二、高亮原理与实现
高亮功能在Elasticsearch中通过高亮查询(Highlight Query)实现。高亮查询会在搜索过程中对匹配的词进行高亮显示,并允许用户自定义高亮标签和样式。
"query"部分指定了搜索的查询语句,"highlight"部分则指定了高亮相关设置。通过设置"pre_tags"和"post_tags"来定义高亮标签,使用"fragment_size"来指定片段大小。
三、高亮功能应用场景
高亮功能在Elasticsearch中有广泛的应用场景。以下是几个常见的应用场景:

  • 商品搜索:在电商平台上,用户搜索商品时,高亮功能可以帮助用户快速找到与搜索关键词匹配的商品,提高用户体验。

  • 文档搜索:在企业内部文档搜索中,高亮功能能够突出显示与搜索关键词相关的文档段落,方便用户快速定位关键信息。

  • 代码搜索:在代码搜索中,高亮功能可以将搜索关键词所在的代码片段高亮显示,帮助开发者更快地找到所需代码。
    四、高亮功能优化
    虽然高亮功能在Elasticsearch中已经非常强大,但在实际应用中,可能还需要针对特定场景进行优化。以下是一些常见的优化方法:

  • 精确匹配与模糊匹配:在设置高亮查询时,可以根据需要使用精确匹配或模糊匹配。精确匹配更准确,但可能忽略某些相关内容;模糊匹配则可以匹配更多内容,但可能存在一定误差。

  • 高亮位置自定义:可以自定义高亮位置,例如仅高亮关键词所在句子或段落,以减少高亮结果的干扰。 高亮标签与样式:可以自定义高亮标签和样式,使其更符合网站或应用程序的主题和风格。

  • 缓存优化:对高亮查询结果进行缓存,以提高搜索效率。可以考虑使用Elasticsearch缓存机制或自定义缓存实现。 处理大型文本字段:当处理大型文本字段时,可以调整高亮查询的片段大小,以避免消耗过多内存和带宽。
    五、高亮功能常见问题与解决方案
    在使用高亮功能时,可能会遇到一些常见问题。以下是一些问题的解决方案:

  • 高亮结果过多或不准确:可以尝试调整高亮查询的设置,如精确匹配与模糊匹配、高亮标签与样式等,以提高高亮结果的准确性和相关性。同时,还可以对搜索词进行过滤和去重,以避免过多干扰结果。

  • 高亮查询性能问题:高亮查询可能会增加搜索时间。可以考虑使用缓存优- 化方法来提高性能,如缓存高亮查询结果、使用布隆过滤器等。此外,还可以对文本字段进行分词处理,以降低高亮查询的复杂度。

相关文章:

elasticsearch14-高亮

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…...

HUAWEI华为MateBook X Pro 2021款 i7 集显(MACHD-WFE9Q)原装出厂Win10系统20H2

华为笔记本电脑原厂系统自带指纹驱动、显卡驱动、声卡驱动、网卡驱动等所有驱动、出厂主题壁纸、系统属性华为专属LOGO标志、Office办公软件、华为电脑管家等预装程序 链接&#xff1a;https://pan.baidu.com/s/1oeSM0ciwyyRIKms5tR4SNA?pwdo2gq 提取码&#xff1a;o2gq...

21天学会C++:Day9----初识类与对象

CSDN的uu们&#xff0c;大家好。这里是C入门的第九讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 面向过程与面向对象 2. 类的定义 3. 类中的访问限定符 3.1 访问限定符的…...

【深度学习】 Python 和 NumPy 系列教程(十七):Matplotlib详解:2、3d绘图类型(3)3D条形图(3D Bar Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图 2. 3D散点图 3. 3D条形图&#xff08;3D Bar Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读…...

基于Spring Boot+vue的酒店管理系统

文章目录 项目介绍主要功能截图:前台后台部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot+vue的酒店管理…...

Python 通过threading模块实现多线程

视频版教程 Python3零基础7天入门实战视频教程 我们可以使用threading模块的Thread类的构造器来创建线程 def _ init _(self, groupNone, targetNone, nameNone, args(), kwargsNone, *, daemonNone): 上面的构造器涉及如下几个参数。 group:指定该线程所属的线程组。目前该…...

用一个RecyclerView实现二级评论

先上个效果图&#xff08;没有UI&#xff0c;将就看吧&#xff09;&#xff0c;写代码的整个过程花了4个小时左右&#xff0c;相比当初自己开发需求已经快了很多了哈。 给产品估个两天时间&#xff0c;摸一天半的鱼不过分吧&#xff08;手动斜眼&#xff09; 需求拆分 这种大家…...

音视频 SDL简介

一、SDL简介 SDL&#xff08;Simple DirectMedia Layer&#xff09;是一套开放源代码的跨平台多媒体开发库&#xff0c;使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数&#xff0c;让开发者只要用相同或是相似的代码就可以开发出跨多个平台&#xff08;Linux、Win…...

7.前端·新建子模块与开发(自动生成)

文章目录 学习地址视频笔记自动代码生成模式开发增删改查功能调试功能权限分配 脚本实现权限分配 学习地址 https://www.bilibili.com/video/BV13g411Y7GS/?p15&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 视频笔记 自动代码生成模式开发 …...

Linux 创建目录

语法&#xff1a;mkdir xxx Linux路径 在当前目录下创建文件夹 在/目录下创建文件夹 如果想要一次性创建多个层级的目录&#xff0c;如下图 会报错&#xff0c;因为上级目录test并不存在&#xff0c;所以无法创建test目录 可以通过-p选项&#xff0c;将一整个链条都创建完成…...

【DIY小记】修复Win10启动出现蓝屏0xc0000185错误的一些方法

近些日子想到自己尘封已久的笔记本电脑没有开机了&#xff0c;很多软件驱动之类的没有更新&#xff0c;就打算把电脑开起来做一轮批量升级。但开电脑的时候很久没有进入Win10桌面&#xff0c;等了很长一段时间蓝屏提示0xc0000185错误&#xff0c;说系统需要恢复。经历了一番折腾…...

Linux 下的 10 个 PDF 软件

本文[1]是我们正在进行的有关 Linux 顶级工具系列的延续&#xff0c;在本系列中&#xff0c;我们将向您介绍最著名的 Linux 系统开源工具。 随着互联网上越来越多地使用可移植文档格式 (PDF) 文件来获取在线书籍和其他相关文档&#xff0c;拥有 PDF 查看器/阅读器对于桌面 Linu…...

浅谈redis分布式锁

浅谈redis分布式锁 分布式锁介绍 分布式锁&#xff0c;顾名思义&#xff0c;分布式系统中的锁&#xff0c;当多个进程不在同一个系统中时&#xff0c;用分布式锁控制各个进程对共享资源的访问&#xff0c;通过互斥来保持一致性。 使用场景&#xff1a;电商中某商品的秒杀活动…...

【Python保姆级教程】List容器

文章目录 前言一、列表是什么二、列表的定义2.1 有初始值2.2 空列表使用方括号创建空列表使用list()函数创建空列表 三、list列表常用操作3.1 添加元素3.2 删除元素3.3 修改元素3.4 列表长度 四、遍历操作4.1 使用for循环4.2 使用while循环和索引 总结 前言 Python是一种广泛使…...

微服务保护-授权规则

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…...

v-if失效原因

一般v-if失效都是和绑定变量有关&#xff0c;我所知道的一般有两种 1.绑定的变量为String类型或者其他类型 就是返回的变量类型与所需要的布尔类型不匹配。 <template><div><div id"container" ref"container" v-iftype></div>&l…...

Chrome 基于 Wappalyzer 查看网站所用的前端技术栈

1. 找到谷歌商店 https://chrome.google.com/webstore/search/wappalyzer?utm_sourceext_app_menu 2. 搜索 Wappalyzer 3. 添加至Chrome 4. 使用 插件 比如打开 https://www.bilibili.com/ 就可以看到其所以用的前端技术栈了...

python的装饰器

作用:在不改变原来函数的代码情况下,进行修改,或者增加函数的功能装饰器本质上就是一个闭包雏形:def wrapper(fn): wrapper: 装饰器 , fn: 目标函数def inner():# 在目标函数执行前的一些动作fn()# 在目标函数执行后的一些动作return inner #千万别加(),这里是返回一…...

P2P协议的传输艺术

TP 采用两个 TCP 连接来传输一个文件。 控制连接&#xff1a;服务器以被动的方式&#xff0c;打开众所周知用于 FTP 的端口 21&#xff0c;客户端则主动发起连接。该连接将命令从客户端传给服务器&#xff0c;并传回服务器的应答。常用的命令有&#xff1a;list——获取文件目…...

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…...

资源捕获高效解决方案:猫抓浏览器扩展让媒体提取更简单

资源捕获高效解决方案&#xff1a;猫抓浏览器扩展让媒体提取更简单 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字时代&#xff0c;我们每天都在网页上浏览大量的媒体内容&#xff0c;从精…...

开发者专属OpenClaw配置:nanobot镜像对接VSCode插件开发

开发者专属OpenClaw配置&#xff1a;nanobot镜像对接VSCode插件开发 1. 为什么选择nanobot镜像进行VSCode插件开发 去年我在开发一个智能代码补全插件时&#xff0c;发现市面上大多数AI辅助工具都存在响应延迟高、隐私性差的问题。直到接触到OpenClaw生态下的nanobot镜像&…...

联想M920x黑苹果配置指南:从硬件适配到性能优化的完整方案

联想M920x黑苹果配置指南&#xff1a;从硬件适配到性能优化的完整方案 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 联想M920x作为一款紧凑型商用主机&#xff0c;通过…...

突破3大技术瓶颈:抖音音乐批量下载工具的创新解决方案

突破3大技术瓶颈&#xff1a;抖音音乐批量下载工具的创新解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作领域&#xff0c;音频素材的获取与管理已成为制约生产力的关键因素。特别是当…...

STM32从入门到实战:两周速成指南

STM32快速入门指南&#xff1a;从零基础到项目实战1. 项目概述1.1 STM32与8051的对比分析对于已经掌握8051和C语言的开发者而言&#xff0c;STM32的学习曲线并不陡峭。关键在于理解何时需要从8051迁移到STM32平台&#xff1a;计算能力需求&#xff1a;当8051的主频无法满足复杂…...

实战jdk1.8新特性:在快马平台用lambda和stream处理订单数据

最近在重构一个老项目的订单模块时&#xff0c;决定全面升级到JDK1.8。这个版本引入的lambda和Stream API真是让人眼前一亮&#xff0c;尤其是处理集合数据时&#xff0c;代码量直接减半。今天就用InsCode(快马)平台带大家实战这些新特性&#xff0c;模拟一个订单数据处理系统。…...

新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码)

新手避坑指南&#xff1a;用MATLAB复现TI IWR1443雷达的距离与速度FFT处理&#xff08;附完整代码&#xff09; 第一次拿到IWR1443毫米波雷达开发板时&#xff0c;看着官方文档里密密麻麻的英文术语和零散的代码片段&#xff0c;我对着电脑屏幕发呆了整整半小时。作为电子工程专…...

s2-pro效果展示:多说话人语音合成(同一模型切换不同音色)

s2-pro效果展示&#xff1a;多说话人语音合成&#xff08;同一模型切换不同音色&#xff09; 1. 专业级语音合成效果展示 s2-pro作为Fish Audio开源的专业级语音合成模型&#xff0c;其最惊艳的能力在于同一模型支持多种音色切换。通过上传不同的参考音频&#xff0c;模型可以…...

OFA视觉蕴含模型部署教程:日志分级输出与推理过程可追溯性设计

OFA视觉蕴含模型部署教程&#xff1a;日志分级输出与推理过程可追溯性设计 1. 镜像简介与核心价值 今天咱们来聊聊一个特别实用的AI模型——OFA视觉蕴含模型。简单来说&#xff0c;它能看懂图片&#xff0c;然后判断你描述的两句话&#xff0c;跟这张图片是什么关系。 想象一…...

3分钟解决Word论文格式难题:免费获取APA第7版参考文献样式终极指南

3分钟解决Word论文格式难题&#xff1a;免费获取APA第7版参考文献样式终极指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为Word中找不到APA第…...