第二阶段 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/10 15:27:32 阅读更多 →
终极指南:如何在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 阅读更多 →

最新新闻

深入解析 Winscope “Invisible due to”:窗口不可见的底层原因与排查指南

深入解析 Winscope “Invisible due to”:窗口不可见的底层原因与排查指南

1. 先搞清楚:Winscope里的“Invisible due to”到底是谁写的前阵子连续帮人排查了两个窗口不显示的问题,现象几乎一样:在Winscope窗口详情面板里,目标窗口状态写着“invisible due to: app not visible”。不少人对这个字段的理解…

2026/10/10 15:26:53 阅读更多 →
代码重构美学:从坏味道到清晰表达的实战之道

代码重构美学:从坏味道到清晰表达的实战之道

写代码这几年,我一直有一个执念:代码不只是给机器执行的指令,它也是给人阅读的文本。这个想法在参加完一届代码重构美学大赛之后,变得无比清晰。“以重构致美学,以代码赴匠心”——这是我提交参赛作品时写在简介里的第…

2026/10/10 15:26:53 阅读更多 →
从零搭建 ERPNext V15:Docker 部署完整步骤及常见问题解决(适用于生产环境)|TaoToken 统一 Key 通道实践

从零搭建 ERPNext V15:Docker 部署完整步骤及常见问题解决(适用于生产环境)|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/10 15:26:53 阅读更多 →
在 Linux 20.04 上从零搭建 ROS1 Noetic 开发环境:TaoToken 辅助配置与验证

在 Linux 20.04 上从零搭建 ROS1 Noetic 开发环境: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 15:26:53 阅读更多 →
zotero-AI-Butler笔记导出全攻略:一键导出DOCX/Markdown,AI笔记自动归档到Zotero之外

zotero-AI-Butler笔记导出全攻略:一键导出DOCX/Markdown,AI笔记自动归档到Zotero之外

人工智能大模型AI 应用科研 【免费下载链接】zotero-AI-Butler 【Zotero AI 管家】调用大模型,自动精读论文库里的论文,总结为Zotero笔记。支持主流大模型平台!您只需像往常一样把文献丢进 Zotero, 管家会自动帮您精读论文&#x…

2026/10/10 15:26:53 阅读更多 →
从GitHub日榜看开发者工具新趋势与筛项目之道

从GitHub日榜看开发者工具新趋势与筛项目之道

2026年10月4日,周日,我照例在早上七点左右刷了一遍 GitHub 热榜项目页面。日榜这个东西很奇妙,白天和晚上的榜单完全是两个世界:夜里海外开发者活跃,冲榜的多是个人工具和偏学术的项目;白天亚洲开发者忙碌&…

2026/10/10 15:25:51 阅读更多 →

日新闻

卫星轨道分类全解析:从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 阅读更多 →