搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索

搜索 

     搜索内容比较多,onesearch分成两部分,第一部分,Query构建,其中包括搜索词设置,设置返回字段,filter,高亮;第二部分分页和排序。第一部分是映射引擎负责,映射通用表达式为具体引擎的查询(Query)。

SearchRequest构建

构建Query

searchRequest.source 设置是否保留source,若保留source字段可以返回source类型字段

排除_content字段返回,该字段是文档内容,通常比较大,content返回高亮片段

Query使用Wrapper,跟上一版本不同,需自行base64编码,以前版本不需要

queryMapping mapTo 方法  query块映射引擎解释表达式按策略映射为esdsl,具体可参考 onesearch 1.0 文档

再见esdsl,搜索引擎 elasticsearch通用表达式搜索(附源码)_es表达式检索引擎-CSDN博客

构建高亮 

高亮字段设置本着默认即可用的原则,如果用户没有传入,Text类型字段设置高亮,目前没有支持字段级的高亮设置,实际上字段级设置使用上很麻烦

构建完整的搜索请求

服务层调用映射引擎构建Query和高亮部分,然后传给引擎层搜索服务,处理分页,排序,agg,最后执行,结果处理

引擎层,设置分页和排序,整个SearchRequest构建完成

类型库

类型库设置索引返回对应的类型,默认情况下返回Map,设置类型库可以返回bean

上图设置了索引”pdm-document”的返回类型,Elasticsearch8 通过SearchRequest的模板类型类似的实现

nested搜索

nested使用通用表达式的“.”,如,nested.a,nested字段的a属性

为了兼容性,设置了nested enable开关,nested enabled 的OperatorMapping实现可识别”.”操作符,映射为esdsl nested path

下图示例

对应转换后的esdsl

处理搜索结果 

搜索返回SearchResponse,包括搜索结果和agg结果,搜索结果包括高亮处理,agg结果处理放在agg章节介绍

下图搜索结果处理逻辑

  1. content 字段用于全文搜索,文档内容,系统的保留名称,为了不和业务冲突,alias名称 “_content”
  2. 结果字段使用source字段,即,索引source属性设置为true,后续可选使用doc field
  3. 设置高亮的字段,如,content,优先返回高亮片段,而不是source,高亮字段可设置,系统默认Text类型为高亮

最后返回total,用于下一页搜索,搜索展示在下一篇聚合,综合展示搜索结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145268.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MedPrompt:基于提示工程的医学诊断准确率优化方法

Medprompt:基于提示工程的医学诊断准确率优化方法 秒懂大纲解法拆解MedPrompt 提示词全流程分析总结创意视角 论文:Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine 秒懂大纲 ├── 1 研究背景【描述背…

兴业小知识|法拍房你不知道的省钱小技巧~划走可就亏大了

如果说二手房市场是买卖双方之间的博弈,那法拍房市场则是纯买方的心理游戏。 在法拍房竞拍过程中,有人稳如泰山,有人坐立不安,每一次的出价都是对相互底线的一番试探。 有激进竞拍,拍出天价的,有一举夺魁…

使用宝塔部署项目在win上

项目部署 注意: 前后端部署项目,需要两个域名(二级域名,就是主域名结尾的域名,需要在主域名下添加就可以了),前端一个,后端一个 思路:访问域名就会浏览器会加载前端的代…

手把手教你-MAC笔记本安装Pytorch环境

MAC笔记安装Pytorch 环境安装 1. 安装brew 方法1 参考: https://www.jianshu.com/p/e0471aa6672d?utm_campaignhugo 使用中科大镜像加速访问: /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)&qu…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【时间管理】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核(LiteOS-M) 轻量系统内核&#…

百望云生态伙伴大会在北京、深圳、昆明三地举办,携手共赢数字化未来!

伴随着金税四期数电票、乐企加速扩围,激发了企业大量的财税数字化转型的需求,为财税服务市场注入了前所有未有的活力。2024年7月9日,百望云成功登陆港交所,成为港股“电子发票第一股”,加码财税业务布局,纵…

【C++ Primer Plus习题】16.10

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <string> #include <…

【刷题日记】15. 三数之和

15. 三数之和 两数之和可以用巧思也可以用map 三数之和会更加复杂一点&#xff0c;且这道题还需要考虑避免重复答案&#xff01; 思路&#xff1a; 特判&#xff1a;检如果nums 为 null 或长度小于 3直接返回空数组。排序&#xff1a;使用 sort对数组进行升序排序。就变成了…

京东h5st 4.8逆向

最开始扒的时候版本号还是4.1&#xff0c;现在已经到了4.8了&#xff0c;原来的AES也没有了&#xff0c;现在都是魔改的加密方法&#xff0c;还整成了vmp。跟了一下整个流程&#xff0c;和原来的流程大差不差&#xff0c;h5st变长了&#xff0c;一共分9部分。简单走一下流程。 …

玩具车检测系统源码分享

玩具车检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

web基础—dvwa靶场(十二)JavaScript Attacks

JavaScript Attacks (前端攻击) 本章节中的攻击旨在帮助您了解如何在浏览器中使用 JavaScript 以及如何对其进行操作&#xff0c;攻击可以通过分析网络流量来实现&#xff0c;但这不是本章节的重点而且可能要困难得多。 只需提交单词 “success” 即可攻击成功&#xff0c;显然…

编写程序,在一行上显示1-5数字,每个相邻的数字要求用空格进行分开

目录 前言 一、一行输出&#xff08;使用一个System语句输出&#xff09; 二、多行输出&#xff08;使用多&#xff08;N&#xff09;个System语句输出&#xff09; 三、循环输出&#xff08;使用for语句循环在通过System语句输出&#xff09; 四、完整代码 前言 1.本文所…

图神经网络池化方法

图神经网络池化方法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

windows C++-并行编程-并行算法(四)- 并行排序

并行模式库 (PPL) 提供了对数据集合并行地执行工作的算法。这些算法类似于 C 标准库提供的算法。并行算法由并发运行时中的现有功能组成。 PPL 提供三种排序算法&#xff1a;concurrency::parallel_sort、concurrency::parallel_buffered_sort 和 concurrency::parallel_radix…

志邦家居CIO吴俊涛谈转型:天润融通如何赋能家居行业未来

根据国家统计局、住建部等各部门综合数据显示&#xff0c;2024年国内泛家居全渠道销售额在预计将超过4.7万亿元&#xff0c;并且在存量房需求释放与智能家居品类创新的推动下&#xff0c;预计2027年将突破5.3万亿元&#xff0c;展现出强劲的增长弹性。 然而&#xff0c;家居行…

【Mysql】为modified_time和created_time设置默认值

建立表SQL&#xff1a; CREATE TABLE your_table_name (id int(11) NOT NULL AUTO_INCREMENT,/* 其他字段 */created_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建日期,modified_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改…

如果 Linux 这么好,为什么没有更多的人使用它呢?

原文&#xff1a;DHH - 2024.09.02 几周前&#xff0c;我在推特上看到一个问题&#xff1a;“如果 Linux 这么好&#xff0c;为什么没有更多的人使用它呢&#xff1f;” 这是一个很合理的问题&#xff01;在你仔细考虑之前&#xff0c;直觉上这是正确的。Linux 甚至是免费的&a…

neo4j关系的创建删除 图的删除

关系的创建和删除 关系创建 CREATE (:Person {name:"jack"})-[:LOVE]->(:Person {name:"Rose"})已有这个关系时&#xff0c;merge不起效果 MERGE (:Person {name:"Jack" })-[:LOVE]->(:Person {name:"Rose"})关系兼顾节点和关…

10_Python流程控制_循环

循环 循环是控制程序重复执行特定代码块的关键结构。Python提供了几种不同的循环结构&#xff0c;以满足不同的编程需求。 While循环 while 循环会重复执行一个代码块&#xff0c;只要指定的条件为真。 适用情况&#xff1a;不清楚具体的循环次数&#xff0c;或者当条件一直…

“科学突破奖”获得者连续两篇Nature,成功绘制人类主要激酶底物特异性图谱

激酶研究进展 近期Nature期刊发表关于酪氨酸激酶的研究文章。这是威尔康奈尔医学癌症中心Jared L. Johnson和Lewis C. Cantley团队自2023年成功绘制丝/苏氨酸激酶底物特异性图谱后&#xff0c;时隔一年后再次成功绘制酪氨酸激酶底物特异性图谱&#xff0c;为理解激酶在信号传导…