2015-12-07 87 views
1

Match/Against如果我在查询中传递唯一值并返回0,如果我传递存在多行的值,则返回true。如果多行匹配,MySQL全文搜索返回0

SELECT MATCH(b.branch_name) 
AGAINST ('Men' IN NATURAL LANGUAGE MODE), branch_name 
FROM `branch` AS `b` WHERE 1 

Table Data: 
id | branch_name 
-------------------- 
1 | Men 
2 | Beauty 
3 | Women 

如果我通过了所有的行MATCH(b.branch_name) AGAINST ('Men' IN NATURAL LANGUAGE MODE)返回0, 如果我通过MATCH(b.branch_name) AGAINST ('Women' IN NATURAL LANGUAGE MODE)返回> 0值同为'beauty'

任何人都可以请帮我在哪里,我错了?

回答

2

存在一个名为ft_min_word_len的系统变量,其默认值为4(请参阅here)。

这意味着少于四个字母的单词被忽略 - 不包含在索引中。索引中没有条目;没有行返回。

重置该值,然后重建索引,以便“men”将位于索引中。然后你的查询将起作用。

+0

那么我如何在查询中修改该值? – minc