注意事项
- 如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。
show variables like 'ft%';
查看mysql配置ft_min_word_len
检索最小单位长度,默认为4,更改为1,然后重启mysql,必须重建所有fulltext index(这个很重要,不重建可能会不生效)
sql写法
直接检索:
where MATCH (title,content) AGAINST ('关键字' in boolean mode)
关键字搜索语法规则:
+ 一定要有(不含有该关键词的数据条均被忽略)。
- 不可以有(排除指定关键词,含有该关键词的均被忽略)。
> 提高该条匹配数据的权重值。
< 降低该条匹配数据的权重值。
~ 将其相关性由正转负,表示拥有该字会降低相关性(但不像 - 将之排除),只是排在较后面权重值降低。
* 万用字,不像其他语法放在前面,这个要接在字符串后面。
" " 用双引号将一段句子包起来表示要完全相符,不可拆字。
使用排序:
select a.*,(MATCH (a.title) AGAINST ('关键字' in boolean mode)) as fulltext_words from table_name a where MATCH (a.title) AGAINST ('关键字' in boolean mode) order by fulltext_words desc