首页 > 解决方案 > 查询扩展和自然语言模式之间的区别

问题描述

我正在学习并运行一些针对 ex 的 mysql 查询的测试:

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

我的问题是>>以下各项的使用有什么区别:

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

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

 //3// AGAINST (? IN BOOLEAN MODE)

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

标签: mysql

解决方案


3种全文检索的特点:

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

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

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


推荐阅读