我已经用MATCH AGAINST声明了MySQL语句。我不习惯使用此功能,但是看起来确实很简单。
但是当我使用此查询时:
SELECT productnaam,
productomschrijving,
MATCH (productnaam, productomschrijving) AGAINST('Kop van Jut'),
MATCH (productnaam, productomschrijving) AGAINST('Springkussen')
FROM product
WHERE product.productid in (508, 578)
我真的不明白为什么'Kop van Jut'的值不大于零。我也尝试过使用双引号,加号等。什么都没有。
有人可以告诉我我做错了什么吗?
答案 0 :(得分:1)
'Kop van Jut'
返回0结果的原因是搜索字符串中的单词太短。对于MyISAM表,在全文搜索中考虑的最小单词长度为4个字符。来自manual:
在全文搜索中某些单词会被忽略:
任何太短的单词都会被忽略。全文搜索发现的默认最小单词长度为三个字符 InnoDB搜索索引,或MyISAM的四个字符。
如果您可以设置系统变量,则可以将ft_min_word_len
的值调低至3,以使匹配项适用于该特定搜索字符串。