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 / 分词配置

相关新闻

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

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

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

2026/7/19 3:01:28阅读更多 →
STM32+OV2640摄像头实时图像采集与TCP传输方案

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

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

2026/7/19 3:01:28阅读更多 →
Cocos Creator游戏开发:面向对象编程实战指南

Cocos Creator游戏开发:面向对象编程实战指南

1. 项目概述:为什么要在游戏开发中重学面向对象?如果你是从Cocos Creator的图形化界面拖拖拽拽开始接触游戏开发的,可能会觉得“面向对象编程”这个词有点老生常谈,甚至有点过时。毕竟,很多功能用组件脚本拼拼凑凑也能…

2026/7/19 3:01:28阅读更多 →
效率工具大揭秘:首助编辑高手HTML批量修改实操指南与核心功能解析

效率工具大揭秘:首助编辑高手HTML批量修改实操指南与核心功能解析

面对成百上千个HTML文件,你是否还在用“CtrlF”苦苦寻找,或者用“CtrlC、CtrlV”进行着枯燥的机械复制?手动修改不仅耗时耗力,稍不留神还容易改错代码,导致网页显示异常。其实,繁琐的文本处理工作完全可以交…

2026/7/19 6:01:44阅读更多 →
不平衡分类问题本质与系统性解决路径

不平衡分类问题本质与系统性解决路径

1. 什么是不平衡分类?它不是数据“不够多”,而是数据“说谎了”“Imbalanced Classification”——这个术语第一次出现在我手头的客户模型诊断报告里时,我正盯着一个准确率98.7%却在实际业务中频频漏判高风险客户的模型发呆。客户问&#xff…

2026/7/19 6:01:44阅读更多 →
Android面试核心知识体系与高频问题解析

Android面试核心知识体系与高频问题解析

1. Android面试核心知识体系全景图作为在Android开发领域深耕多年的技术老兵,我经历过从初级到架构师的全阶段面试考核。这份面试题整理不是简单的知识点罗列,而是基于大厂真实面试场景提炼的知识图谱。Android技术栈可分为四个层级:基础层&a…

2026/7/19 6:01:44阅读更多 →
2025年AI-ML趋势:物理AI与Agent技术解析

2025年AI-ML趋势:物理AI与Agent技术解析

1. 2025年AI-ML技术趋势全景解读在2025年的技术版图中,AI与机器学习领域正经历着从底层架构到应用范式的深刻变革。这份趋势报告揭示了两个关键演进方向:物理AI(Physical AI)的崛起和Agent技术的革命性突破。物理AI标志着AI系统开…

2026/7/19 6:01:44阅读更多 →
Python字符串格式化与数据结构实战指南

Python字符串格式化与数据结构实战指南

1. Python字符串格式化与输入输出实战字符串格式化是Python编程中最基础也最常用的功能之一。在日常开发中,我们经常需要将变量、表达式的结果嵌入到字符串中输出,或者对用户输入的数据进行格式化处理。1.1 三种主流字符串格式化方法Python目前主要有三种…

2026/7/19 6:01:44阅读更多 →
ChatGPT Work实战:如何把一次性对话改造成可复用的任务工作流

ChatGPT Work实战:如何把一次性对话改造成可复用的任务工作流

很多人使用 ChatGPT Work 时,仍然沿用普通聊天的操作习惯:把资料、目标、格式要求和补充说明全部塞进一段提示词,然后等待系统一次性生成最终文件。简单任务中这种方式可能有效,但当任务涉及多份附件、数据计算、Word 或 PPT 输出…

2026/7/19 5:59:44阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →