最近在作mysql优化,涉及到match函数的使用,特地整理一下。mysql
使用MATCH的使用介绍:sql
1.语法糖:
MATCH(title) against('KEY' IN BOOLEAN MODE)
MATCH(title,body) against('KEY' IN BOOLEAN MODE) mysql优化
2.使用注意:
MySql默认支持全文检索的字符长度是4
能够用SHOW VARIABLES LIKE 'ft_min_word_len' 来查看指定的字符长度
也能够在mysql配置文件my.ini 更改最小字符长度,在my.ini 增长一行
好比:ft_min_word_len = 2,改完后重启mysql便可。 函数
mysql在集和查询中的对每一个合适的词都会先计算它们的权重,一个出如今多个文档中的词将有较低的权重(可能甚至有一个零权重),由于在这个特定的集中,它有较低的语义值。
不然,若是词是较少的,它将获得一个较高的权重,mysql默认的阀值是50%,上面‘you’在每一个文档都出现,所以是100%,只有低于50%的才会出如今结果集中。
3.检索表达式及语法
一。MATCH(title) against('+zhang -lishi ~wangwu zhaoliu*' IN BOOLEAN MODE)
+表示and,-表示not,~表示异或运算符,*表示全部,空格表示or 等等
复制代码
4.特殊符号处理
当全文检索碰到特殊符号的时候,会触发函数自动对检索条件进行分词搜索。
注意:一些特殊符号属于函数的保留符号,函数会把符号解析成条件进行分词
例如:欣欣贸易(北京)有限公司 会自动拆分红 欣欣贸易,北京,有限公司去作搜索,返回包含欣欣贸易或者北京或者有限公司的记录。
这里注意下:mysql默认检索长度是4,这些条件中北京是两个字符,不会触发检索
也就是说最后检索的结果是只包含 欣欣贸易和有限公司 这两个条件的数据优化
不触发自动分词,须要把本身的检索条件用“双引号”包含起来
例如:MATCH(title) against('“欣欣贸易(北京)有限公司” “大华贸易(北京)股份有限公司”' IN BOOLEAN MODE)
上面所述但愿能对你们有帮助!spa