【高频面试题】FullText 全文索引(MySQL)
普通索引匹配完整字段值like %关键词%不走索引扫描全表全文索引 FULLTEXT专门用来在长文本文章、标题、内容中搜索单词 / 短语分词检索支持语义相关度排序。1. 基础概念适用引擎InnoDBMySQL5.6 支持、MyISAM支持字段类型CHAR、VARCHAR、TEXT原理把文本拆分成单词token建立单词 → 文档 ID 的倒排索引搜索时按单词匹配计算相关性分数。默认分词规则英文按空格、标点分割中文默认不支持分词需要插件ngram 分词器。两个重要系统参数innodb_ft_min_token_sizeInnoDB 最小单词长度默认3。 小于 3 个字符的词不会被收录。ft_stopword_file停用词列表a,the,is中文的 “的、了”停用词不会进索引。⚠️ 中文坑原生全文索引不切中文词语连续汉字当成一个字符串。MySQL 提供ngram分词插件按固定 N 元组切分中文。2. 创建全文索引建表时创建CREATE TABLE article ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200), content TEXT, FULLTEXT INDEX ft_article(title, content) -- 多字段联合全文索引 ) ENGINEInnoDB;已有表添加索引ALTER TABLE article ADD FULLTEXT INDEX ft_article(title,content);删除全文索引ALTER TABLE article DROP INDEX ft_article;3. 查询语法MATCH() AGAINST()语法MATCH(字段1,字段2) AGAINST (搜索词 [搜索模式])MATCH 指定要检索哪些字段AGAINST 指定搜什么词以及用哪种搜索规则。返回值相关性分数分数越高代表匹配度越高。3 种搜索模式① 自然语言模式默认IN NATURAL LANGUAGE MODE查找包含关键词的行按相关性降序不支持运算符。SELECT id,title, MATCH(title,content) AGAINST (java IN NATURAL LANGUAGE MODE) AS score FROM article WHERE MATCH(title,content) AGAINST (java);规则词出现频率太高超过 50% 文档会被当成停用词搜不到最小词长限制生效。② 布尔模式IN BOOLEAN MODE支持 - * 短语运算符不计算相关性排序只判定是否匹配。符号含义java必须包含 java-mysql不能包含 mysqljava*前缀匹配java 开头单词 (java,javac)hello world精确短语连续完整词组word提高该词相关性word降低该词相关性示例必须有 java不能有 springSELECT * FROM article WHERE MATCH(title,content) AGAINST (java -spring IN BOOLEAN MODE);③ 查询扩展模式WITH QUERY EXPANSION先根据关键词找到相关文档再提取文档里高频词做二次搜索适合概念扩展容易引入无关数据。MATCH(title,content) AGAINST (数据库 WITH QUERY EXPANSION);4. 中文使用ngram 分词器ngram把中文按 N 个字符滑动切分ngram_token_size一般设 2二元分词。建表指定 ngram 解析器CREATE TABLE news( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT, FULLTEXT INDEX ft_news(content) WITH PARSER ngram ) ENGINEInnoDB;注意ngram_token_size2最小搜索长度是 2不能搜单个汉字。查询示例SELECT * FROM news WHERE MATCH(content) AGAINST (深圳 IN NATURAL LANGUAGE MODE);5. 全文索引优缺点✅ 优点相比like %xxx%全表扫描全文索引检索速度快很多自带相关性打分适合文章搜索场景支持布尔语法、短语匹配。❌ 缺点有最小词长限制太短的词无法检索高频词超过半数文档存在在自然语言模式会被忽略中文原生不支持语义分词ngram 会产生大量碎词索引体积大DML 开销大新增 / 修改文本需要维护倒排索引写入性能下降不支持部分场景不能用于ORDER BY以外复杂排序不适合短字段精确匹配。6. 什么时候不要用 MySQL FullText大量中文搜索、需要分词人名、专有名词、高亮、分页权重、同义词 → 推荐 Elasticsearch / Solr只是简单模糊匹配短字符串 → 普通 B 树索引 like xxx%前缀匹配7. 常见踩坑MATCH的字段列表必须和建立全文索引的字段完全一致否则报错自然语言模式下如果关键词在超过一半数据里存在查不出结果ngram 分词 token_size 一旦设置不能在线修改需要重建索引AGAINST里不要直接拼接用户输入防止注入。

相关新闻

C语言程序结构深度拆解:从编译链接到内存布局

C语言程序结构深度拆解:从编译链接到内存布局

写过几年 C 的人,大概都有过类似经历:代码看着很对,编译却报错;编译能过,一跑就崩。很多人第一反应是语法不够熟、算法写错了,可查来查去,最后往往发现是程序的结构出了问题。这里说的结构&…

2026/10/5 4:45:38 阅读更多 →
基于Java的车辆维修管理系统:Spring Boot+MyBatis部署与二次开发全攻略

基于Java的车辆维修管理系统:Spring Boot+MyBatis部署与二次开发全攻略

简介:一套基于Java的车辆故障维修管理系统,面向汽车维修企业的数字化管理需求,可供毕业设计、课程设计或中小型维修门店的流程规范化参考。系统涵盖车辆信息、故障记录、维修订单、配件库存与财务报表等核心模块,并采用多用户权限…

2026/10/5 4:45:38 阅读更多 →
配网 PMU微型同步相量测量单元(D-PMU / μPMU,广州智昊:PMU3300-配网微型同步相量测量单元)

配网 PMU微型同步相量测量单元(D-PMU / μPMU,广州智昊:PMU3300-配网微型同步相量测量单元)

配网 PMU微型同步相量测量单元(D-PMU / μPMU,广州智昊:PMU3300-配网微型同步相量测量单元) 配网 PMU微型同步相量测量单元(D-PMU / μPMU,微型同步相量测量单元) PMU同步相量测量装置分为二款:…

2026/10/5 4:44:38 阅读更多 →

最新新闻

VS Code 插件开发实战:打造专属 DeepSeek 编程助手

VS Code 插件开发实战:打造专属 DeepSeek 编程助手

简介:这份PDF文档面向具备一定编程基础、希望借助大模型提升编码效率的开发者,系统讲解如何从零开发一款定制化的VS Code插件,将DeepSeek编程助手接入日常编辑器。内容覆盖插件开发基础、开发环境搭建、DeepSeek API申请与调用,以…

2026/10/5 7:06:29 阅读更多 →
YOLOv11工业质检实战:从环境配置到产线部署的误检率优化指南

YOLOv11工业质检实战:从环境配置到产线部署的误检率优化指南

简介:这份PDF文档面向工业质检领域的技术开发人员与算法工程师,围绕YOLOv11展开高精度缺陷检测与实时分类的完整方案讲解,帮助读者应对传统质检效率低、成本高、复杂缺陷难以捕捉等痛点。文档共37页,以单一PDF形式打包&#xff0c…

2026/10/5 7:06:29 阅读更多 →
框架表示法入门:从槽、继承到匹配机制的核心原理

框架表示法入门:从槽、继承到匹配机制的核心原理

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

2026/10/5 7:06:29 阅读更多 →
人声节奏对齐软件推荐:从专业DAW到AI人声制作工具怎么选

人声节奏对齐软件推荐:从专业DAW到AI人声制作工具怎么选

人声节奏对齐软件推荐:从专业DAW到AI人声制作工具怎么选 很多人录完一首歌后会遇到同一个问题:旋律大体没错,但某些字总是抢拍或拖拍;副歌情绪到了,人声却没有和鼓点、贝斯或伴奏卡在一起;再加上音准不稳、…

2026/10/5 7:06:29 阅读更多 →
智能枕头开发实战:压电薄膜传感器与睡眠监测算法核心技术复盘

智能枕头开发实战:压电薄膜传感器与睡眠监测算法核心技术复盘

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

2026/10/5 7:06:29 阅读更多 →
迷宫中的DQN:深度强化学习原理、代码与调参全解析

迷宫中的DQN:深度强化学习原理、代码与调参全解析

简介:深度强化学习 DQN 是深度神经网络与 Q-Learning 结合的经典算法,借助神经网络逼近 Q 函数,解决状态与动作空间增大时 Q 表存储和计算开销过大的问题。这份 PDF 面向机器学习初学者和人工智能方向学习者,以迷宫寻路为具体场景…

2026/10/5 7:05:29 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 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/5 0:00:23 阅读更多 →

周新闻

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/5 5:06:42 阅读更多 →
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/5 1:10:22 阅读更多 →
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/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →