我有一个奇怪的问题--我使用MySQL 5.1和一个带有Fulltable索引的表。在mysql配置中,ft_min_word_len设置为2(因此,长度至少为两个字符的单词将被编入索引)。
下面的查询是简化的,但效果与原始查询相同。
当我搜索:
SELECT company FROM my_table WHERE MATCH (company) AGAINST ('intern*' IN BOOLEAN MODE)我得到了一些公司的名字,比如“国际公司”(International.),"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/正确的结果。
如果我用LIKE %just%而不是MATCH-AGAINST搜索,我也会得到正确的结果。
有没有人知道,为什么我在第二个提到的查询中没有得到正确的结果?
发布于 2012-03-03 16:05:01
发现麻烦制造者:
这是因为停止词列表。通过在my.cnf中添加以下行来禁用列表解决了这个问题:
ft_stopword_file = ''
您可以在下面的链接中找到更多详细信息:
MySQL: 11.9.6。微调MySQL全文搜索
MySQL: 11.9.4。全文词组
https://stackoverflow.com/questions/9530586
复制相似问题