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) |

相关推荐
隔窗听雨眠13 小时前
OceanBase接入DeepSeek:数据库与AI的深度融合如何改写企业数据规则
数据库·人工智能·oceanbase
playboy13413 小时前
工作室 NAS 存储故障-办公室所有数据无法访问怎么办
数据库
Elastic 中国社区官方博客13 小时前
你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
byxdaz14 小时前
jeston平台交叉编译Poppler库与预览pdf文件
数据库
SilicoCode14 小时前
江科大STM32入门:FLASH闪存详解——从结构原理到读写保护
数据库·mongodb
一个有温度的技术博主15 小时前
DeepSeek Harness 深度解析:与 LangChain / LangGraph 的本质区别
数据库·oracle·langchain·harness
Wang's Blog15 小时前
PostgreSQL笔记4: 市场地位、生态全景与行业应用实践
数据库·笔记·postgresql
隔窗听雨眠16 小时前
Oracle误Truncate操作恢复:从原理到实战的完整指南
数据库·oracle
Lethehong17 小时前
MySQL迁移如何做到零改造?四层兼容方案详解
数据库·mysql·adb
spter。17 小时前
Redis 与 Single-flight 的分工与协作
数据库·redis·缓存