我正在学习和运行一些测试与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)
我不是想改进我的代码,我只是想了解它背后的思想。
3条答案
按热度按时间woobm2wo1#
3种类型全文检索的特征:
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修饰符指定查询扩展搜索。以获取更多信息。
6tdlim6h3#
在自然语言模式下:在此模式下,使用自然语言搜索算法执行搜索。根据相关性对结果进行排序,相关性较高的结果首先出现。
在布尔模式下:在此模式下,搜索查询将被解释为布尔表达式。您可以使用+(强制)、-(禁止)和 *(通配符)等运算符来控制搜索。结果不会根据相关性进行排名。
带有查询扩展:在此模式下,搜索以自然语言模式执行,但具有自动查询扩展。查询扩展意味着搜索引擎扩展搜索查询以包括相关术语,以尝试改进搜索结果。
在带有查询扩展的自然语言模式下:这是自然语言模式和查询扩展的组合。使用自然语言算法执行搜索,并根据相关性对结果进行排序。此外,搜索查询会自动扩展以包括相关术语。