PG 全文搜索实战(1):为什么不用 LIKE

发布时间:2026/9/20 12:45:50

PG 全文搜索实战(1):为什么不用 LIKE 本系列第 1 篇。先搞清楚LIKE %keyword%到底差在哪全文搜索又解决了什么问题。LIKE 的三宗罪假设有一张文章表想搜标题/正文里含某个词的记录。很多人第一反应SELECT*FROMarticlesWHEREcontentLIKE%数据库%;看着能用但生产上有三个致命问题1. 无法走索引前导通配符LIKE %xxx%开头是%普通 B-Tree 索引用不上只能全表扫描。几十万行就开始慢上千万行直接卡死。2. 不理解“词”只会字符匹配LIKE %run%会匹配到running、brunch——它不懂英文词干也不懂中文分词。搜apple匹配不到apples除非再写规则搜“数据库”匹配不到“数据 库”。3. 没有相关性排序LIKE 只能告诉你“匹配/不匹配”不能告诉你“哪条更相关”。而搜索的核心恰恰是把最相关的排前面。全文搜索怎么解决PostgreSQL 全文搜索FTS做了三件 LIKE 做不到的事能力LIKE全文搜索走专用索引GIN❌✅ 快分词 / 词干归一化❌✅run/running 归一相关性排名❌✅ts_rank关键词高亮❌✅ts_headline布尔/短语查询与或非勉强✅tsquery核心思路把文档预处理成一堆**归一化的词lexeme**存进tsvector再用tsquery表达查询条件两者用匹配并用 GIN 索引加速。一个直观对比-- LIKE字符匹配全表扫描SELECT*FROMarticlesWHEREcontentLIKE%running%;-- FTS词匹配run/running/ran 都能命中可走 GIN 索引SELECT*FROMarticlesWHEREto_tsvector(english,content) to_tsquery(english,running);什么时候还是用 LIKE精确前缀匹配LIKE abc%能走索引。数据量很小或只是偶尔模糊查。需要匹配任意子串片段如搜商品编号中间几位FTS 反而不合适。记住LIKE 是字符匹配FTS 是语义/词匹配。搜“文章内容、评论、描述”这类自然语言文本用 FTS。下一篇核心概念 tsvector / tsquery / 分词配置
延伸阅读

更多相关文章

2026/9/14 9:54:02

KungFu32A156MQT与AT24C02的I2C通信实现与优化

1. KungFu32A156MQT与AT24C02硬件基础解析KungFu32A156MQT是芯旺微电子推出的32位车规级MCU,基于自主KungFu内核架构设计。这款芯片在汽车电子领域应用广泛,具备以下核心特性:工作频率最高72MHz内置256KB Flash和32KB SRAM支持-40℃~125℃宽温…

2026/9/17 18:19:03

STM32+OV2640摄像头实时图像采集与TCP传输方案

1. 项目背景与核心需求 在嵌入式视觉系统中,OV2640摄像头模组因其高性价比和丰富的功能接口,成为STM32平台图像采集的热门选择。而基于TCP协议的图像传输方案,则能充分利用网络带宽实现稳定、有序的数据流传输。这个项目要解决的核心问题是&a…

2026/9/19 18:35:42

Python入门指南:从环境搭建到基础语法

1. Python基础入门:从零开始的第一天作为一名有十年Python开发经验的程序员,我经常被问到"如何开始学习Python"。今天我就带大家从最基础的环境搭建开始,完成Python入门的第一个里程碑。无论你是完全没有编程基础的小白&#xff0c…

2026/9/20 12:45:39

MiniMax-M3 基准:同一把 TaoToken Key 从 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/9/20 12:45:39

Kimi 写 Manus 邀请码申请模板,Base URL 填 TaoToken 的 API 地址

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

2026/9/20 12:45:39

VCSA 6.7证书过期导致无法登录的紧急恢复与修复指南

1. 故障现场还原与核心问题定位1.1 一个典型的VCSA 6.7登录故障场景早上九点,运维群里弹出一条消息:“vCenter打不开了,网页提示证书错误,客户端也连不上。”我打开浏览器访问vCenter的5480端口,页面直接报SSL证书过期…

2026/9/20 12:40:39

windows控制台cmd乱码解决方案

我们在cmd中执行命令的时候,有时候会出现中文乱码问题,我们可以使用chcp命令解决乱码在控制台输入chcp命令可以查看当前代码页的编码是963(简体中文 GBK编码)控制台中输入chcp 65001并回车将代码页编码改为 UTF-8,这样…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码