0

我有一个奇怪的问题——我使用 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)

我得到“正义与旅行”-输入/正确结果。

如果我用LIKE %just%而不是搜索MATCH-AGAINST,我也会得到正确的结果。

有谁知道,为什么我在第二个提到的查询中没有得到正确的结果?

4

1 回答 1

1

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

您可以在以下链接中找到更多详细信息:
MySQL:11.9.6。微调 MySQL 全文搜索
MySQL:11.9.4。全文停用词

于 2012-03-03T16:05:01.067 回答