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;
全部评论