mysql全文检索使用

数据库数据量10万左右,使用like '%test%'要耗费30秒左右,放弃该办法

使用mysql的全文检索

第一步:建立索引

首先修改一下设置:

my.ini中ngram_token_size = 1

可以通过 show variables like '%token%';来查看

接下来建立索引:alter table 表名 add fulltext titlefull (字段名) with parser ngram;

第二步:查询(in boolean mode类似搜索引擎中的关键词,可以使用+-等操作符)

select * from 表名 where match(title) against('主题 测试' in boolean mode) ;

当ngram_token_size = 1 时,('主题 测试')转换为('"主题","测试"')。

select * from 表名 where match(title) against('主题测试' in NATURAL LANGUAGE MODE) ;

当ngram_token_size = 1 时,('主题测试')转换为('"主 题 测 试"')。

延伸阅读:

全文索引的两种搜索模式

  • 自然语言搜索(也是默认的搜索模式): 不能使用操作符 进行复杂检索.

  • BOOLEAN模式 : 可以通过操作符 进行复杂搜索, 与搜索引擎类似.

|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 | SELECT * FROM `table` WHERE MATCH (`column`) against('你好世界' IN NATURAL LANGUAGE MODE) # 必须包含'你好', 但不能包含'我的' SELECT * FROM `table` WHERE MATCH (`column`) against('+你好 -我的' IN BOOLEAN MODE) |

相关推荐
TDengine (老段)21 分钟前
TDengine 逻辑计划生成 — 从 AST 到关系代数算子树
大数据·数据库·物联网·wpf·时序数据库·tdengine·涛思数据
折戟不必沉沙33 分钟前
mysql忘记密码
数据库·mysql
kuonyuma43 分钟前
MyBatis入门·注解操作
java·spring boot·mysql·spring·mybatis
聪明努力的积极向上1 小时前
【claude code】MySQL MCP 配置完整指南
数据库·mysql·ai编程
AC赳赳老秦1 小时前
OpenClaw + 阿里云 OSS 自动化:批量上传下载文件、自动备份本地数据到云端
运维·数据库·阿里云·自动化·云计算·deepseek·openclaw
数智化管理手记1 小时前
三步轻量化落地法!精益赋能数字化,让工厂转型告别形式化
运维·数据库·人工智能·精益工程
又至冬日1 小时前
鸿蒙(HarmoneyOS),封装一个通用关系型数据库操作类
数据库·oracle·harmonyos
Nontee1 小时前
新手数据库避坑指南:通俗理解“页分裂”与“数据碎片”
数据库·oracle
DIY源码阁1 小时前
JavaSwing酒店管理系统 - MySQL版
java·mysql·eclipse
川石课堂软件测试1 小时前
UI自动化测试|元素操作&浏览器操作实践
功能测试·测试工具·mysql·ui·docker·容器·单元测试