MYSQL匹配不显示与%% query这样的mysql相同的结果

时间:2015-11-20 06:11:21

标签: mysql

我们只需将所有mysql(如%%查询)迁移到MATCH Against

我们的旧查询waS

SELECT * from jobs where jobtitle like '%php%' 

我尝试了以下查询

SELECT * from jobs where MATCH(jobtitle) AGAINST ('php')
SELECT * from jobs where MATCH(jobtitle) AGAINST ('php'  IN BOOLEAN MODE)

我尝试了* +,但所有查询都没有显示相同的结果,显示出类似于'%php%'

我希望使用匹配的mysql查询在职位名称中找到任何单词

2 个答案:

答案 0 :(得分:0)

要索引的单词的最小和最大长度由ft_min_word_len和ft_max_word_len系统变量定义。默认最小值为4个字符。这就是为什么它不能使用3个字符。

您需要更改其值,并重建您的FULLTEXT索引。如果要搜索三个字符的单词,可以通过更改配置文件中的值来设置ft_min_word_len变量。或者,如果您具有超级用户权限,则可以使用以下命令设置此环境变量:

SET  ft_min_word_len=3

查看更多详情:http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

答案 1 :(得分:0)

在mysql v5.6中,ft_min_word_len服务器变量的默认值为4,这意味着'php'搜索字符串不会返回自然语言模式和布尔模式中的任何行,除非您将限制降低到3并重新创建全文索引。

在myisam表的自然语言模式下,如果超过50%的行中存在php,则查询不会返回任何行。因此,使用带有+运算符的布尔模式。