MySQL:MATCH AGAINST没有显示所有结果

时间:2012-03-02 09:08:04

标签: mysql match-against table-index

我有一个奇怪的问题 - 我使用MySQL 5.1和一个带有 Fulltable-Index 的表。在mysql配置中,ft_min_word_len设置为2(因此索引长度至少为两个字符的单词)。

以下查询已经过简化,但效果与原始查询相同。

当我搜索:

SELECT company FROM my_table WHERE MATCH (company) AGAINST ('intern*' IN BOOLEAN MODE)

我的公司名称为“internat” - 如“International Inc.”,“Internship.org”。

然而,当我搜索:

SELECT company FROM my_table WHERE MATCH (company) AGAINST ('just*' IN BOOLEAN MODE)

虽然“正义与旅行”表中有条目,但我没有得到任何结果。

但是当我搜索:

 SELECT company FROM my_table WHERE MATCH (company) AGAINST ('travelling*' IN BOOLEAN MODE)

我得到了“正义与旅行”-Entry / correct result。

如果我使用LIKE %just%代替MATCH-AGAINST进行搜索,我也会得到正确的结果。

有人有想法,为什么我在第二个提到的查询中没有得到正确的结果?

1 个答案:

答案 0 :(得分:1)

找到麻烦制造者:
这是因为停止词汇列表。 通过在my.cnf中添加以下行来禁用列表解决了问题:
ft_stopword_file =''

您可以在以下链接中找到更多详细信息:
MySQL: 11.9.6. Fine-Tuning MySQL Full-Text Search
MySQL: 11.9.4. Full-Text Stopwords