【问题标题】:MySQL: MATCH AGAINST is not showing all resultsMySQL:MATCH AGAINST 未显示所有结果
【发布时间】:2012-03-02 09:08:04
【问题描述】:

我有一个奇怪的问题 - 我使用 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 进行搜索,我也会得到正确的结果。

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

【问题讨论】:

标签: mysql match-against table-index


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多