【问题标题】:Mysql 'MATCH AGAINST' is not retrieving correct answerMysql 'MATCH AGAINST' 没有检索到正确答案
【发布时间】:2014-01-31 20:22:05
【问题描述】:

我有一张桌子“table1”。并且有记录:

type    id  title            description                    keywords   hidden 
poll    12  Who is best     Poll for selecting best leader

我有这个问题:

SELECT * FROM `table1` WHERE   MATCH(`title`,`description`,`keywords`,`hidden`) AGAINST ('Who is best' IN BOOLEAN MODE)

当我执行查询时,它返回空结果但没有错误

这个查询有什么问题?它应该返回一条现有记录,对吧?

在我们使用'IN BOOLEAN MODE'时,表格是否需要任何额外的设置

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    一些常用词被忽略。查看stopword 列表,其中包含您的所有三个搜索词。

    此外,短于 4 个字符的单词不会被编入索引。

    您可以接受这一点,也可以通过修改停用词列表或更改索引词的长度限制来调整全文搜索。

    How to modify the stopword list.

    How to modify shortest/longest word length in a full text index

    我也推荐阅读the manual on IN BOOLEAN MODE

    【讨论】:

    • 另外,少于4个字符的单词会被自动排除。
    • @GordonLinoff,但这里超过 4 个字符
    • @Linto 。 . . “谁”和“是”被忽略。 “最好”是一个停用词。
    • @klas,+Who +is +best 或“Who is best”都不起作用。根据您的说法,“停用词”中的单词不会显示?
    • 索引中不包含停用词,因此无法找到。我已经通过有关如何修改全文索引构建方式的链接修改了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 2012-05-22
    • 2012-03-15
    • 2011-11-10
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多