我们只需将所有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查询在职位名称中找到任何单词
答案 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,则查询不会返回任何行。因此,使用带有+运算符的布尔模式。