Mysql 开启全文搜索 fulltext

开启全文索引需要使用 MySQL 版本大于 5.7,由于该配置比较繁琐,所以所有系统默认不支持,需要通过运维手动开启。

全文索引是为了解决需要基于相似度的查询,而不是精确数值比较。

可以通过 SQL 命令查看当前配置的最小搜索长度(分词长度):

SHOW VARIABLES LIKE 'ft%';
变量名 描述
ft_boolean_syntax 全文搜索的布尔语法
ft_max_word_len 最大词长度
ft_min_word_len 最小词长度
ft_query_expansion_limit 查询扩展限制
ft_stopword_file 停用词文件

全文索引的相关参数都无法进行动态修改,必须通过修改 MySQL 的配置文件来完成。修改最小搜索长度的值为 1,首先打开 MySQL 的配置文件 /etc/my.cnf,在 [mysqld] 的下面追加以下内容:

[mysqld]
innodb_ft_min_token_size = 1
ft_min_word_len = 1

配置完后重启 MySQL 服务器。

完成后可使用以下脚本测试全文搜索:

## 查看索引
SHOW INDEX FROM config;
## 删除全文索引
ALTER TABLE config DROP INDEX xxx;
## 创建全文索引,注意该字段只能创建一个全文索引,多余的使用以上的删除语句删除
ALTER TABLE config ADD FULLTEXT(value) WITH PARSER ngram;

## 使用以下语句测试查询
SELECT `id`,`key`,`value`,MATCH(`value`) AGAINST('测试查询') AS _score
    FROM config
    WHERE MATCH(`value`) AGAINST('测试查询')
    ORDER BY _score DESC;
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
105
粉丝
43
喜欢
143
收藏
175
排名:304
访问:3.1 万
私信
所有博文
社区赞助商