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

3duebb1j  于 2023-02-03  发布在  Mysql
关注(0)|答案(3)|浏览(181)

我正在学习和运行一些测试与mysql查询的ex:

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)

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

woobm2wo

woobm2wo1#

3种类型全文检索的特征:

  • 在自然语言模式下...您的搜索词将被视为自然语言(即人类语言)。因此,除了“(双引号)外,此处没有特殊字符。搜索时将排除停用词列表中的所有单词!
  • 在布尔模式下...运算符可以添加到您的搜索项中。这意味着您可以指定有关您的搜索的额外愿望。当然,停用词列表规则也适用,这意味着它们将从您的搜索中排除。
  • WITH QUERY EXPANSION(或IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)...正如最后一个名称所暗示的,是对IN NATURAL MODE的扩展。因此,它基本上与上面提到的第一种模式相同,除了以下功能:找到的与初始搜索词最相关的词将添加到初始搜索词中,然后执行最终搜索。如果您同意以这种方式定义有趣,查询将返回包含搜索词和可能有趣内容的更广泛结果。:)
jexiocij

jexiocij2#

官方文件

https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
全文搜索有三种类型:
自然语言搜索将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。除双引号(“)字符外,没有特殊运算符。应用停用词表。
如果给定IN NATURAL LANGUAGE MODE修饰符或未给定修饰符,则全文搜索是自然语言搜索。
布尔搜索使用特殊查询语言的规则解释搜索字符串。该字符串包含要搜索的单词。它还可以包含指定要求的运算符,例如单词在匹配行中必须存在或不存在。或者它的权重应该高于或低于通常。某些常用词(停止词)从搜索索引中省略,如果出现在搜索字符串中,则不匹配。IN BOOLEAN MODE修饰符指定布尔搜索。
查询扩展搜索是对自然语言搜索的修改。搜索字符串用于执行自然语言搜索。然后,将搜索返回的最相关行中的单词添加到搜索字符串中,并再次执行搜索。查询返回第二次搜索中的行。IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION或WITH QUERY EXPANSION修饰符指定查询扩展搜索。以获取更多信息。

6tdlim6h

6tdlim6h3#

在自然语言模式下:在此模式下,使用自然语言搜索算法执行搜索。根据相关性对结果进行排序,相关性较高的结果首先出现。
在布尔模式下:在此模式下,搜索查询将被解释为布尔表达式。您可以使用+(强制)、-(禁止)和 *(通配符)等运算符来控制搜索。结果不会根据相关性进行排名。
带有查询扩展:在此模式下,搜索以自然语言模式执行,但具有自动查询扩展。查询扩展意味着搜索引擎扩展搜索查询以包括相关术语,以尝试改进搜索结果。
在带有查询扩展的自然语言模式下:这是自然语言模式和查询扩展的组合。使用自然语言算法执行搜索,并根据相关性对结果进行排序。此外,搜索查询会自动扩展以包括相关术语。

相关问题