MySQL全文检索
2021/5/18 19:25:26
本文主要是介绍MySQL全文检索,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#添加全文索引
ALTER TABLE `biz_document` ADD FULLTEXT f_content (`content`) with parser ngram;
ALTER TABLE `biz_document` ADD FULLTEXT f_title (`title`) with parser ngram;
#搜索
SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('最多跑一次' IN NATURAL LANGUAGE MODE); #自然语言模式
SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('+最多跑一次 +管理' IN BOOLEAN MODE); #布尔模式
SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('+最多跑一次 -管理' IN BOOLEAN MODE); #布尔模式
SELECT * FROM biz_document WHERE MATCH (title) AGAINST ('>最多跑一次 +MySQL' IN BOOLEAN MODE); #布尔模式
#自然语言模式: 文本的查询被转换为n-gram分词查询的并集。例如,where条件('信息系统')转换为('信息 息系 系统')
#布尔模式:文本查询被转化为n-gram分词的短语查询。 例如,where条件('信息系统')转换为("'信息 息系 系统'")。
#通配符查询: 如果前缀的长度比ngram_token_size小,那么查询结果将返回在全文索引中所有以这个词作为前缀的n-gram的词。
-- 如果前缀的长度大于等于ngam_token_size,那么这个查询则转换为一个短语(phrase search),通配符则被忽略, 改用短语查询。
#INSERT INTO biz_acticles (title) VALUES ('信息系统'), ('信息 系统'), ('信息的系统'), ('信息'), ('系统'), ('息系');
SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息系统' IN NATURAL LANGUAGE MODE); #自然语言模式
SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息系统' IN BOOLEAN MODE); #布尔模式
SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('信息*' IN BOOLEAN MODE); #通配符查询
SELECT * FROM biz_acticles WHERE MATCH (title) AGAINST ('"信息 系统"' IN BOOLEAN MODE); #短语查询
show VARIABLES LIKE '%token%'; #ngram_token_size
这篇关于MySQL全文检索的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享