我有一个奇怪的问题 - 我使用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
进行搜索,我也会得到正确的结果。
有人有想法,为什么我在第二个提到的查询中没有得到正确的结果?
答案 0 :(得分:1)
找到麻烦制造者:
这是因为停止词汇列表。
通过在my.cnf中添加以下行来禁用列表解决了问题:
ft_stopword_file =''
您可以在以下链接中找到更多详细信息:
MySQL: 11.9.6. Fine-Tuning MySQL Full-Text Search
MySQL: 11.9.4. Full-Text Stopwords