MySQL 全文检索

466人浏览 / 0人评论

参考

https://blog.csdn.net/huhigher/article/details/127958155

https://mp.weixin.qq.com/s/4rQnBSxAIH1zbQCc4Ujowg

使用

# 查看可用参数,ft(FullText) 开头的是控制全文索引的
show variables like '%ft%'

# 对已经存在的表创建全文索引(创建索引的过程比较缓慢,对于大数据量的表更慢)
CREATE FULLTEXT INDEX <index_name> on tableName(字段名);  
## 或者
ALTER TABLE tableName ADD FULLTEXT <index_name>(字段名);

# 示例
ALTER TABLE case_data ADD FULLTEXT index_case_name(`case_name`);

# 使用全文索引查询
## 简单使用
select * from case_data where match(case_name) against('侵权责任');

## 使用布尔查询
select * from case_data where match(case_name) against('*侵权责任*' in boolean mode);

## 布尔查询常见的匹配模式
空格:可选的,包含该词的顺序较高
"text":全词匹配查找
text*:通配符查找,*只能放在后面
+text:必须包含,+只能放在词前面
-text:必须不包含,不能单独使用,如`+aaaa-cccc
>text:如果含有该词,提高词的相关性
<text:如果含有该词,降低词的相关性
():条件组,如aaaa+(bbbb cccc)表示必须包含 bbbb 或 cccc

# 中文分词器插件 ngram
## 在5.7版本开始就内置了中文分词插件 ngram,我们将刚才创建的索引删掉,然后重新用 ngram做分词重新建立索引
ALTER TABLE case_data ADD FULLTEXT index_case_name(`case_name`) WITH PARSER ngram;

全部评论