mysql - 查询扩展和自然语言模式之间的区别
问题描述
我正在学习并运行一些针对 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)
我不是想改进我的代码,我只是想了解它背后的想法。
解决方案
3种全文检索的特点:
在自然语言模式...您的搜索词将被视为自然语言(人类语言)。所以这里没有特殊字符,除了“(双引号)。搜索时将排除停用词列表中的所有单词!
IN BOOLEAN MODE ... 运算符可以添加到您的搜索词中。这意味着您可以指定有关搜索的额外愿望。当然,停用词列表规则也适用,这意味着它们将被排除在您的搜索之外。
WITH QUERY EXPANSION (或 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) ...正如这个姓氏意味着扩展到 IN NATURAL MODE。所以它与上面提到的第一种模式基本相同,除了这个功能:将与您的初始搜索词找到的最相关的词添加到您的初始搜索词中并执行最终搜索。如果您同意以这种方式定义有趣,则该查询会返回更广泛的结果以及您的搜索词以及可能有趣的内容。:)
推荐阅读
- android - 文件管理器应用程序如何访问共享文件数据
- javascript - onChange 事件后组件未重新渲染
- batch-file - Jenkins Pipeline:如何在后台运行批处理脚本?【企业域名】
- ios - 包含 pusher_websocket_flutter 依赖项后,Flutter 应用程序无法为 iOS 构建
- webstorm - 启用同步的导出设置
- javascript - 将日期类型的变量设置为 HTML 日期输入字段中的值
- java - 为什么这段代码的输出不同?
- javascript - 如何计算ajax成功的数据?
- c - 为什么我不能从零开始输入整数?
- asp.net-mvc - 当表单控件的属性名称中有破折号 (-) 时如何处理 .NET Core 模型绑定