MySQL 布尔全文搜索17 Mar 2025 | 5 分钟阅读 布尔搜索模式是 MySQL 中全文搜索的另一种形式。它比自然语言搜索更侧重于单词,这意味着它搜索的是单词而不是概念。它允许我们根据包含布尔运算符的非常复杂的查询进行搜索,例如小于(<)或大于(>)运算符、加号(+)和减号(-)符号、子表达式(“(”和“)”)、双引号(“”)、降低结果值贡献的运算符(~)和通配符。 因此,这种搜索模式适合有经验的用户,因为它提供了一种执行一些高级搜索的方法。通过在 AGAINST 函数中包含IN BOOLEAN MODE 修饰符,我们可以以这种模式执行全文搜索。 让我们用一个基本示例来理解它。假设我们有一个名为 posts 的表,其中包含以下数据 ![]() 以下示例显示了如何搜索名称包含“Java”一词的帖子的标题的结果 执行查询将返回包含 Java 字样的两个帖子名称 ![]() 假设我们想获取帖子名称包含“MySQL”一词但排除包含“Java”一词的其他行的帖子。在这种情况下,我们可以使用排除布尔运算符(-)来获得所需的结果。请看以下查询 执行查询将返回包含 MySQL 字样但不包含 Java 字样的帖子名称 ![]() 相关性分数MATCH() 函数为表中的每一行分配一个相关性值,并按相关性最高优先的顺序排列它们。此值决定了它与搜索词的相关程度。相关性分数始终是非负浮点数。 如果要检查文本相关性并将行按相关性最高优先排序,可以使用以下查询 执行查询,我们将获得所需的结果 ![]() 以下是另一个示例,列出了每一行的相关性值,即使值为零。我们可以在 WHERE 子句 中使用 MATCH() 函数而无需使用 MATCH() 函数来获取此结果。这是语句 执行查询,我们将获得所需的结果 ![]() MySQL 布尔全文搜索运算符此表显示了全文布尔搜索模式中使用的运算符及其含义
让我们看一些说明在搜索查询中使用布尔全文运算符的各种示例: 1. 如果我们要搜索至少包含以下单词之一的行:Java 或 tutorial,可以使用以下语句 2. 如果我们要搜索包含两个单词的行:Java 和 tutorial,可以使用以下语句 3. 如果我们要搜索包含 Java 字样的行,但对包含 MySQL 的行给予更高的排名 4. 如果我们要搜索包含 Java 字样的行,但对包含 MySQL 的行给予较低的排名 5. 如果我们要查找包含以“my”开头的单词的行,例如“MySQL”,则使用以下查询 MySQL 布尔全文搜索特性
下一主题MySQL 查询扩展全文搜索 |
我们请求您订阅我们的新闻通讯以获取最新更新。