查询扩展和自然语言模式的区别

pc_*_*pc_ 2 mysql

我正在学习并使用 mysql 查询运行一些测试,例如:

mysql> SELECT * FROM articles
        WHERE MATCH (title,body)
        AGAINST ('$term' IN NATURAL LANGUAGE MODE);
Run Code Online (Sandbox Code Playgroud)

我的问题是 >> 以下各项的使用有何不同:

 //1// AGAINST ('$term' IN NATURAL LANGUAGE MODE)

 //2// AGAINST ('$term' WITH QUERY EXPANSION)

 //3// AGAINST (? IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

我不是想改进我的代码,我只是想了解它背后的想法。

小智 5

3种全文检索的特点:

  • 在自然语言模式下......您的搜索词将被视为自然语言(人类语言)。所以这里没有特殊字符,除了“(双引号)。搜索时将排除停用词列表中的所有单词!

  • IN BOOLEAN MODE ... 运算符可以添加到您的搜索词中。这意味着您可以指定有关搜索的额外愿望。停用词列表规则当然也适用,这意味着它们将从您的搜索中排除。

  • WITH QUERY EXPANSION(或 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)...正如这个姓氏暗示了对 IN NATURAL MODE 的扩展。所以它与上面提到的第一种模式基本相同,除了这个功能:将与您的初始搜索词找到的最相关的词添加到您的初始搜索词中,并执行最终搜索。如果您同意以这种方式定义有趣的内容,该查询将返回包含您的搜索词和可能感兴趣的内容的更广泛的结果。:)