MySQL 查询扩展 FULLTEXT 搜索

MySQL 查询扩展 FULLTEXT 搜索

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

MySQL 中的查询扩展用于基于自动相关反馈或盲目查询扩展拓宽全文搜索的搜索结果。当使用查询扩展时,MySQL 全文搜索引擎执行以下步骤:

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

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

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

了解了查询扩展的概念后,我们可能会很清楚地知道在搜索结果过短时可以使用查询扩展。我们可以再次执行搜索,但用户可以获得更多与他们所寻找的内容相关的信息。

如果我们想要使用查询扩展全文搜索,我们需要在 AGAINST() 函数中添加 WITH QUERY EXPANSION 搜索修饰符。换句话说,通过添加 WITH QUERY EXPANSION 或 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 来启用它。

以下是在 MySQL 中说明这种搜索的 基本语法 :

SELECT column_lists FROM table_name
WHERE MATCH(column1, column2)
AGAINST('keyword', WITH QUERY EXPANSION);

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

MySQL查询扩展示例

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

MySQL 查询扩展 FULLTEXT 搜索

以下示例显示了一个帖子信息的搜索结果,该帖子的名称包含“ MySQL ”一词,而不使用查询扩展:

mysql> SELECT * FROM posts 
WHERE MATCH(title, descriptions) 
AGAINST('MySQL');

执行查询将返回三篇包含“MySQL”一词的文章名称:

MySQL 查询扩展 FULLTEXT 搜索

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

mysql> SELECT * FROM posts 
WHERE MATCH(title, descriptions) 
AGAINST('MySQL' WITH QUERY EXPANSION);

执行该语句时,在使用查询扩展时,结果集将增加一行。这里的前三行是最相关的,其他行来自于从前三行中衍生出的相关关键字。

MySQL 查询扩展 FULLTEXT 搜索

需要注意的是,盲目的查询扩展会通过返回非相关的输出来显著增加噪音,因此建议仅在搜索词组很短的情况下使用它。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程