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

相关推荐
super大力张4 分钟前
MOE基于结构的药物设计(七):Ligand R-Vectors——如何判断配体可以从哪里继续生长?
数据库·算法·cadd·moe·svl·基于结构的药物设计
Databend6 分钟前
Databend 增量物化视图:基于 Change Tracking 的增量刷新与一致性读取
大数据·数据库·sql
云运维笔记17 分钟前
Zabbix 监控实战:Nginx、MySQL 与 Java 程序配置指南
mysql·nginx·zabbix
腾讯云开发者34 分钟前
与数据库打了几十年交道,WorkBuddy让我有了「第二知识库」
数据库
星云API技术支持44 分钟前
企业微信二次开发机器人:实时消息回调与历史消息同步如何配合
数据库·机器人·企业微信
Aolith1 小时前
我在React全栈项目中搭建了一个完整题库
数据库·react.js·全栈
雨辰AI2 小时前
信创数仓分层建模|国产数据库 ODS/DWD/DWS 分层落地规范(金仓 / 达梦 / 高斯适配)
数据库·云原生·政务
风哥2号2 小时前
MySQL8.x/9.x数据库安装自动化全过程-Fgedu
数据库·mysql自动化安装
疯狂打码的少年2 小时前
【数据库技术】SQL数据查询(SELECT基本语法)
数据库·笔记·sql·oracle
程序员黎剑3 小时前
Redis缓存击穿:热点Key过期打崩数据库的3种解决方案
数据库·redis·缓存