我使用以下查询:
SELECT
(SELECT COUNT(*) FROM blah
WHERE MATCH(text) AGAINST ('c')
) as count1,
(SELECT COUNT(*) FROM blah
WHERE text LIKE '% c %'
) as count2这将返回:
count1 count2
0 19为什么会这样呢?
请注意,ft_min_word_len被设置为1,并且已经重建了索引。为什么它不工作?:|
字段blah包含诸如"y c h g b g p q n g j f k t u a w d v b e x c m“之类的字符串。
发布于 2011-11-13 16:24:40
首先,MySQL全文搜索默认为natural language mode。您需要使用IN BOOLEAN MODE关键字切换到支持*运算符的boolean mode。
其次,全文查询查找包含以字母c开头的单词(属于four or more letters和not in the stopword list)的条目。同时,您的LIKE查询将在任何地方查找包含字母c的任何条目,即使它位于单词中间。
https://stackoverflow.com/questions/8110307
复制相似问题