第二阶段 16 · match_phrase 短语匹配
阶段第二阶段 / 查询能力ES 查询match_phrase| PostgreSQL 对照短语顺序匹配全文-1. 概念match是「命中任意/全部词即可不管顺序」match_phrase要求这些词按顺序、相邻出现像搜「一整个短语」。例如搜carbon laptopmatchlaptop carbon也能命中顺序无所谓match_phrase必须出现carbon紧接着laptop2. PostgreSQL 对照-- 近似全文检索的相邻短语- 表示紧邻SELECT*FROMsalesdataWHEREto_tsvector(english,description) phraseto_tsquery(english,carbon laptop);PG 的phraseto_tsquery/-就是短语顺序匹配等价于match_phrase。3. ES DSL基本短语GET salesdata_idx/_search { query: { match_phrase: { description: carbon laptop } } }允许词间有间隔slopGET salesdata_idx/_search { query: { match_phrase: { description: { query: carbon laptop, slop: 2 } } } }slop: 2允许两个词之间最多间隔 2 个位置如carbon x1 laptop也能命中。前缀短语搜索框实时补全常用GET salesdata_idx/_search { query: { match_phrase_prefix: { description: carbon lap } } }最后一个词按前缀匹配适合「输入时联想」。4. Spring Boot 实现ComponentpublicclassDoc16MatchPhraseQuery{AutowiredprivateElasticsearchClientelasticsearchClient;/** 严格短语词按顺序相邻 */publicListMapString,Objectphrase(StringindexName,Stringfield,Stringphrase)throwsIOException{SearchResponseMaprespelasticsearchClient.search(s-s.index(indexName).query(q-q.matchPhrase(m-m.field(field).query(phrase))),Map.class);returntoSourceList(resp);}/** 带 slop允许词间间隔 */publicListMapString,ObjectphraseWithSlop(StringindexName,Stringfield,Stringphrase,intslop)throwsIOException{SearchResponseMaprespelasticsearchClient.search(s-s.index(indexName).query(q-q.matchPhrase(m-m.field(field).query(phrase).slop(slop))),Map.class);returntoSourceList(resp);}privateListMapString,ObjecttoSourceList(SearchResponseMapresp){returnresp.hits().hits().stream().map(Hit::source).filter(Objects::nonNull).collect(Collectors.toList());}}返回强类型 Java 对象推荐替代裸 Map把Map.class换成 DTO 的Class第 11 篇定义的OrderDoc用JsonProperty映射下划线字段即可直接拿到强类型列表/** 严格短语返回 ListOrderDoc */publicListOrderDocphraseTyped(StringindexName,Stringfield,Stringphrase)throwsIOException{SearchResponseOrderDocrespelasticsearchClient.search(s-s.index(indexName).query(q-q.matchPhrase(m-m.field(field).query(phrase))),OrderDoc.class);// ← 关键DTO 的 Class而非 Map.classreturnresp.hits().hits().stream().map(Hit::source).filter(Objects::nonNull).collect(Collectors.toList());}临时/探索性查询仍可用Map.class对外/长期维护接口建议统一用 DTO。5. 坑与最佳实践只对text有意义短语基于分词后的词项位置keyword不适用。slop不是模糊它控制词间距不纠错拼写。match_phrase_prefix慎用大数据量最后一个词做前缀扩展可能较慢可限制max_expansions。顺序敏感这是它和match的本质区别选型时想清楚要不要顺序。下一篇17-multi_match-多字段.md。

相关新闻

HMC5883L三轴指南针模块:从I2C通信到航向解算的Arduino实战指南

HMC5883L三轴指南针模块:从I2C通信到航向解算的Arduino实战指南

1. 项目概述:Grove - 三轴指南针 V1.0 如果你玩过Arduino或者树莓派,大概率听说过Grove这个生态系统。它最大的好处就是把各种传感器、执行器都模块化了,用统一的四针接口连接,省去了焊接和复杂的杜邦线连接,特别适合快…

2026/10/9 19:37:40 阅读更多 →
基于Arch Linux的嵌入式GPRS开发:从工具链搭建到STM32/Arduino实战

基于Arch Linux的嵌入式GPRS开发:从工具链搭建到STM32/Arduino实战

1. 项目概述:当Arch Linux遇上嵌入式GPRS如果你和我一样,是个喜欢折腾的嵌入式开发者,同时又对Arch Linux那种“自己动手,丰衣足食”的哲学情有独钟,那么“Arch GPRS”这个组合对你来说,可能就充满了吸引力…

2026/10/2 7:55:39 阅读更多 →
终极指南:如何在Draw.io中通过Mermaid插件实现图表制作的革命性升级

终极指南:如何在Draw.io中通过Mermaid插件实现图表制作的革命性升级

终极指南:如何在Draw.io中通过Mermaid插件实现图表制作的革命性升级 【免费下载链接】drawio_mermaid_plugin Mermaid plugin for drawio desktop 项目地址: https://gitcode.com/gh_mirrors/dr/drawio_mermaid_plugin 你是否曾经在绘制技术图表时感到效率低…

2026/10/5 18:20:20 阅读更多 →

最新新闻

C# WinForms图书管理系统:远程操作与图片管理实战

C# WinForms图书管理系统:远程操作与图片管理实战

在做一个管理类的小系统时,很多人一开始都会陷入“功能堆砌”的误区——先把增删改查摆上去,再想界面怎么调,最后才发现数据表设计不合理、图片处理一团糟、更别提让其他人通过局域网访问数据库这种事了。这篇博文我想分享一个比较完整的C# W…

2026/10/10 14:43:45 阅读更多 →
7美元ESP32变身40+模块攻防一体神器:HaleHound-CYD多协议无线渗透平台完整概览

7美元ESP32变身40+模块攻防一体神器:HaleHound-CYD多协议无线渗透平台完整概览

【免费下载链接】HaleHound-CYD ESP32-DIV HaleHound Edition for Cheap Yellow Display - Multi-protocol offensive security toolkit 项目地址: https://gitcode.com/gh_mirrors/ha/HaleHound-CYD 点击查看 免费下载 HaleHound-CYD 是一款运行在 7 美元级 ESP32…

2026/10/10 14:43:45 阅读更多 →
详解academic-humanizer Layer 5语音校准机制:让论文去除AI味后仍读起来像你自己

详解academic-humanizer Layer 5语音校准机制:让论文去除AI味后仍读起来像你自己

【免费下载链接】academic-humanizer Strip AI-writing tells from papers and grant proposals (NSF/NIH), while keeping scholarly voice and tying claims to evidence. A skill for Claude Code, Codex, and MorphMind. 项目地址: https://gitcode.com/gh_mirr…

2026/10/10 14:43:45 阅读更多 →
干货收藏!AI代理评估完全指南:编码、对话、研究、计算机操作Agent评估方法详解|TaoToken

干货收藏!AI代理评估完全指南:编码、对话、研究、计算机操作Agent评估方法详解|TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 14:43:45 阅读更多 →
14MB vs 8MB:Needle 2 到 Needle 3,一次升级卷掉了近一半体积

14MB vs 8MB:Needle 2 到 Needle 3,一次升级卷掉了近一半体积

14MB vs 8MB:Needle 2 到 Needle 3,一次升级卷掉了近一半体积 【免费下载链接】needle Automation foundation model for tiny devices: 2-bit, 8-29 MB, tool calls, ASR, structured extraction and embeddings on phones, wearables, smart homes, ro…

2026/10/10 14:43:45 阅读更多 →
PyTorch多变量LSTM多步股票预测实战

PyTorch多变量LSTM多步股票预测实战

简介:本资源是一份基于PyTorch的股票多变量多步时间序列预测实战项目,面向深度学习初学者与金融AI实践者,聚焦LSTM模型在真实金融场景中的工程化落地。项目完整实现从多源特征(股价、成交量等)预处理、编码器-解码器结…

2026/10/10 14:42:43 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →