一  solr&es高亮

1.1 solr与es高亮功能

解释说明:

1)高亮配置:

fragmentSize(1000) 设置片段长度

numOfFragments(1) 指定返回的片段数量

preTags() 和 postTags() 设置高亮标记

2)字段处理差异:

在 ES 中,使用 matchQuery 而非 termQuery 进行内容查询,因为:

matchQuery 会分析查询文本,更适合高亮

termQuery 用于精确匹配,不适合片段提取

3)得分处理:

explain(true) 使返回结果包含评分信息

通过 hit.getScore() 获取文档相关性得分

4)高亮结果提取:获取第一个高亮片段的内容

hit.getHighlightFields().get("content").fragments()[0].string()

https://chat.deepseek.com/a/chat/s/cfd96216-b726-4e00-9e9b-a74afa0d1c7f

1.2 es高亮功能代码

1代码

在 Elasticsearch 中实现与 Solr 高亮代码相同功能的 Java 代码如下。这段代码实现了相同的功能:分页查询、返回所有字段和得分、对指定字段进行高亮并返回指定数量的片段:

import org.elasticsearch.action.search.SearchRequest;

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.client.RequestOptions;

import org.elasticsearch.client.RestHighLevelClient;

import org.elasticsearch.common.unit.TimeValue;

import org.elasticsearch.index.query.BoolQueryBuilder;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.search.SearchHit;

import org.elasticsearch.search.builder.SearchSourceBuilder;

import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;

import org.elasticsearch.search.sort.ScoreSortBuilder;

import org.elasticsearch.search.sort.SortOrder;

import java.util.Map;

// 1. 构建查询条件(使用之前的查询)

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()

    .must(QueryBuilders.termQuery("title.keyword", retrievalRequest.getCollectionName()))

    .must(QueryBuilders.matchQuery("content", keyword)); // 使用matchQuery而非termQuery以支持高亮

// 2. 创建搜索源构建器

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

    .query(boolQuery)

    .from((pageRequest.getPageNumber() - 1) * pageRequest.getPageSize()) // 分页起始位置

    .size(pageRequest.getPageSize()) // 每页大小

    .fetchSource("*", null) // 返回所有字段,相当于Solr的addProjectionOnField(Field.of("*"))

    .explain(true); // 返回得分,相当于Solr的addProjectionOnField(Field.of("score"))

// 3. 构建高亮设置

HighlightBuilder highlightBuilder = new HighlightBuilder()

    .field(new HighlightBuilder.Field("content") // 要高亮的字段

        .fragmentSize(1000) // 高亮片段长度

        .numOfFragments(1) // 返回的片段数量

        .preTags("<span style='color:red'>") // 高亮前缀

        .postTags("</span>")) // 高亮后缀

    .requireFieldMatch(true); // 只高亮匹配字段

// 4. 添加到搜索源

sourceBuilder.highlighter(highlightBuilder);

// 5. 创建搜索请求

SearchRequest searchRequest = new SearchRequest("your_index_name"); // 对应Solr的"coll"

searchRequest.source(sourceBuilder);

// 6. 执行查询

SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);

// 7. 处理结果

for (SearchHit hit : response.getHits().getHits()) {

    // 获取原始字段

    Map<String, Object> sourceAsMap = hit.getSourceAsMap();

    

    // 获取高亮内容

    if (hit.getHighlightFields().containsKey("content")) {

        String highlightedContent = hit.getHighlightFields().get("content").fragments()[0].string();

        // 将高亮内容设置到返回对象中

    }

    

    // 获取得分

    float score = hit.getScore();

}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DSP音频算法工程师技能2

一、核心知识准备1. 算法原理3A算法&#xff08;AGC自动增益控制/AEC回声消除/ANS降噪&#xff09;&#xff1a;掌握AEC的NLMS/双讲检测原理&#xff0c;ANS的谱减法/维纳滤波&#xff0c;AGC的压缩曲线设计。熟悉Speex/WebRTC等开源实现。EQ音效&#xff1a;IIR/FIR滤波器设计…

第4章-04-用WebDriver页面元素操作

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

【计算机视觉与深度学习实战】04基于K-Means聚类的图像分割系统设计与实现

摘要 图像分割作为计算机视觉领域的基础任务,在目标检测、医学影像分析、自动驾驶等众多应用中发挥着关键作用。本文基于K-Means聚类算法设计并实现了一个完整的图像分割系统,该系统集成了多种颜色空间转换、自定义初始化策略、空间特征融合等先进技术。通过Python和Tkinter…

Android Studio常用知识总结

一、运行方式1.运行 (Run)当您选择“运行”时&#xff0c;Android Studio 会编译您的应用并将其安装到目标设备或模拟器上。这通常用于&#xff1a;快速部署: 您只想看看应用是否能正常启动并运行&#xff0c;或者进行一些基础的用户界面测试。性能测试: 在正常运行模式下测试应…

设计模式笔记_行为型_访问者模式

1. 访问者模式介绍访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变对象结构的前提下&#xff0c;定义作用于这些对象的新操作。访问者模式将操作的逻辑从对象结构中分离出来&#xff0c;使得你可以在运行时动态地添加新的…

数学建模 14 中心对数比变换

用途&#xff1a;是处理成分数据的核心预处理方法&#xff0c;核心目标是解决成分数据的和为常数100% &#xff0c; 导致的维度冗余&#xff0c;非线性相关问题。使得数据满足传统的统计/建模方法&#xff1b;举例子&#xff1a;食品比例中 面粉(50%),糖(30%),水(20%)原理&…

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day7

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

污水处理行业的 “智能革命”:边缘计算网关如何重塑传统运维模式?

污水处理行业的 “智能革命”&#xff1a;边缘计算网关如何重塑传统运维模式&#xff1f;在污水处理这一关乎生态环境与可持续发展的关键领域&#xff0c;蓝蜂网关正凭借其先进技术与强大功能&#xff0c;发挥着无可替代的重要作用。作为工业级物联网解决方案的核心组件&#x…

ASP.NET Core 中的多租户 SaaS 应用程序

介绍随着软件即服务 (SaaS) 持续主导技术领域&#xff0c;构建能够高效地从单一代码库服务于多位客户&#xff08;租户&#xff09;的应用程序变得至关重要。ASP.NET Core 凭借其模块化和可扩展的架构&#xff0c;是实现多租户 SaaS 应用程序的强大框架。本文将指导您了解构建多…

JUC之CompletableFuture【中】

文章目录四、CompletableFuture基本使用4.1 默认线程池、无返回值4.2 默认线程池、有返回值4.3 自定义线程池、有返回值4.4 CompletableFuture 获取结果五、对结果进行处理5.1 方法说明5.2 示例5.3 thenApply vs thenApplyAsync5.3.1 核心区别: 执行线程不同5.3.2 thenApply: 同…

环境变量不生效?

目录 添加环境变量 解决不生效 不生效场景 解决办法 大家都知道Windows系统对于开发者来说并不友好&#xff0c;尤其是新手&#xff0c;当然这是相比于linux和MacOS相比&#xff0c;因为开发工具、项目脚本等环境配置要为复杂&#xff0c;注意事项也更多一些。而这篇文章将…

小迪安全v2023学习笔记(六十六讲)—— Java安全SQL注入SSTISPELXXE

文章目录前记WEB攻防——第六十六天Java安全&SPEL表达式&SSTI模板注入&XXE&JDBC&MyBatis注入环境搭建Hello-Java-SecJavaSecJava安全 - SQL注入-JDBC&MyBatisJDBC注入原理语句拼接预编译的错误使用JdbcTemplate正则过滤MyBatis注入原理Like注入Order B…

把 AI 变成「图书馆管理员」——基于检索增强的离线图书语音导航小盒子

标签&#xff1a;检索增强、语音导航、离线 LLM、RAG、ESP32-S3、低功耗、TTS、BLE ---- 1. 背景&#xff1a;读者找不到书的痛苦 高校图书馆每天 5000 人次&#xff0c;高频问题&#xff1a; • “《深度学习》在哪个书架&#xff1f;” • “有没有类似《三体》的科幻&…

架构思维:在AI时代为产品“减负”的终极武器——用结构化智慧破解数字化复杂困局

摘要 数字化产品的复杂度飙升已成为企业发展的核心瓶颈。本文基于架构思维的本质&#xff08;元素、连接、演进&#xff09;&#xff0c;结合5A架构体系&#xff08;业务/信息/应用/技术/治理架构&#xff09;&#xff0c;系统阐述如何通过分而治之、共性沉淀、AI赋能三大策略降…

黎阳之光:以数字之力,筑牢流域防洪“智慧防线”

当洪水来袭&#xff0c;每一分精准的预报、每一次及时的预警、每一轮科学的预演、每一套完善的预案&#xff0c;都可能关系到江河安澜与万家平安。在水利现代化建设的浪潮中&#xff0c;黎阳之光凭借数字孪生、视频孪生等核心技术&#xff0c;打造流域防洪“四预”管理平台&…

transformer模型初理解

模型介绍 在 Transformer 之前&#xff0c;主流的序列模型是 **RNN&#xff08;循环神经网络&#xff09;** 工作方式类似「逐字阅读」&#xff1a;处理序列时&#xff0c;必须从第一个词开始&#xff0c;一个接一个往后算&#xff08;比如翻译时&#xff0c;先看 “我”&#…

驱动开发系列66 - glCompileShader实现 - GLSL中添加内置函数

一&#xff1a;概述 本文介绍如何为 GLSL 语言中增加一个内置函数&#xff0c;以https://registry.khronos.org/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt扩展为例&#xff0c;介绍下添加textureSamples内置函数的过程。

指针的应用学习日记

Git常见的命令&#xff1a;%h 简化哈希 %an 作者名字 %ar 修订日期(距今) %ad修订日期 %s提交说明指针简介指针(Pointer)是C语言的一个重要知识点&#xff0c;其使用灵活、功能强大&#xff0c;是C语言的灵魂。 指针与底层硬件联系紧密&#xff0c;使用指针可操作数据的地址&am…

KMM跨平台叛逃实录:SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架(代码复用率85%)

KMM跨平台叛逃实录&#xff1a;SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架&#xff08;代码复用率85%&#xff09;一、架构革命&#xff1a;跨平台统一状态管理1.1 核心架构设计1.2 技术矩阵对比二、KMM共享ViewModel实现2.1 基础状态管理2.2 ViewModel核心架…

关于Android webview协议混淆

背景&#xff1a;android中引入的html页面是http请求(web服务仅开放了80端口)&#xff0c;但html页面引用的后端接口是https请求&#xff0c;则发生android中html页面请求接口异常<请求无法发送到后端服务(status0)>。浏览器出于安全考虑&#xff0c;要求&#xff1a; 同…