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

相关推荐
超级种码1 天前
Redis:Redis 常见问题及解决思路
数据库·redis·缓存
计算机学姐1 天前
基于SpringBoot的社区互助系统
java·spring boot·后端·mysql·spring·信息可视化·推荐算法
xcLeigh1 天前
Oracle 迁移 KingbaseES 避坑指南:工具选型、参数配置与性能调优
数据库·oracle·工具·性能·金仓·kingbasees
JY.yuyu1 天前
SQL Server数据库
数据库
June bug1 天前
【配环境】安装配置Oracle JDK
java·数据库·oracle
独自破碎E1 天前
如何在MySQL中监控和优化慢SQL?
数据库·sql·mysql
数据库生产实战1 天前
基础知识 | Oracle Index Split(索引分裂:你的数据库越来越慢可能与此有关!建议排查!
数据库·oracle
知识分享小能手1 天前
Oracle 19c入门学习教程,从入门到精通,Oracle 控制文件与日志文件管理详解(8)
数据库·学习·oracle
走遍西兰花.jpg1 天前
gaussdb的基础命令
数据库·gaussdb
阿杰 AJie1 天前
MyBatis-Plus 的内置方法
java·数据库·mybatis