MySQL 查询扩展 FULLTEXT 搜索

17 Mar 2025 | 阅读 2 分钟

我们知道,每个用户都根据自己的知识来搜索信息。他们使用一些关键字来搜索信息,而这些关键字太短了。我们可以通过 MySQL 引入的一个新概念——查询扩展来解决这个问题,并帮助用户找到他们想要的东西。

MySQL 中的查询扩展用于根据自动相关性反馈或盲目查询扩展来扩大全文搜索的结果集。当使用查询扩展时,MySQL 全文搜索引擎会执行以下步骤:

步骤 1:它将首先搜索所有与给定搜索查询匹配的行。

步骤 2:它将通过检查搜索中的所有行来查找所有相关的词。

步骤 3:最后,它将根据这些相关的词再次搜索,而不是用户指定的原始关键字。

在理解了查询扩展的概念后,可能会清楚,当搜索结果太少时,我们可以使用查询扩展。我们可以再次执行搜索,但通过这个概念,用户可以获得与他们正在寻找的内容更相关的信息。

如果我们想使用查询扩展全文搜索,我们需要在 AGAINST() 函数中添加 WITH QUERY EXPANSION 搜索修饰符。换句话说,它可以通过在搜索短语之后添加 WITH QUERY EXPANSION 或 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 来启用。下面是说明此搜索在MySQL中进行的基本语法

让我们通过示例来了解查询扩展全文搜索在 MySQL 中是如何工作的。

MySQL 查询扩展示例

假设我们有一个名为 posts 的表,其中包含以下数据。该表有一个 titledescription 列作为全文索引。

MySQL Query Expansion FULLTEXT Search

下面的示例显示了不使用查询扩展时,包含“MySQL”词的帖子的搜索结果。

执行此查询将返回包含“MySQL”词的三个帖子名称。

MySQL Query Expansion FULLTEXT Search

现在,我们将使用查询扩展来扩大搜索范围,如下所示:

执行该语句后,当使用查询扩展时,我们将获得结果集中的另一行。这里前三行是最相关的,而其他行则来自从前三行派生的相关关键字。

MySQL Query Expansion FULLTEXT Search

需要注意的是,盲目查询扩展通过返回不相关的输出来显著增加噪声,因此建议仅在搜索短语较短时使用它。