文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  函数和运算符  /  全文搜索函数

14.9 全文搜索函数

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

search_modifier:
  {
       IN NATURAL LANGUAGE MODE
     | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
     | IN BOOLEAN MODE
     | WITH QUERY EXPANSION
  }

MySQL 支持全文索引和搜索

全文搜索使用 MATCH() AGAINST() 语法执行。 MATCH() 接受一个用逗号分隔的列表,该列表命名要搜索的列。 AGAINST 接受要搜索的字符串,以及一个可选的修饰符,该修饰符指示要执行的搜索类型。搜索字符串必须是一个在查询评估期间为常量的字符串值。例如,这排除了表列,因为该列对于每行可能不同。

MySQL 不允许将汇总列与 MATCH() 一起使用;更确切地说,任何匹配此处列出的所有条件的查询都会被拒绝,并显示 ER_FULLTEXT_WITH_ROLLUP

  • MATCH() 出现在查询块的 SELECT 列表、GROUP BY 子句、HAVING 子句或 ORDER BY 子句中。

  • 查询块包含 GROUP BY ... WITH ROLLUP 子句。

  • MATCH() 函数的调用的参数是分组列之一。

以下是一些此类查询的示例

# MATCH() in SELECT list...
SELECT MATCH (a) AGAINST ('abc') FROM t GROUP BY a WITH ROLLUP;
SELECT 1 FROM t GROUP BY a, MATCH (a) AGAINST ('abc') WITH ROLLUP;

# ...in HAVING clause...
SELECT 1 FROM t GROUP BY a WITH ROLLUP HAVING MATCH (a) AGAINST ('abc');

# ...and in ORDER BY clause
SELECT 1 FROM t GROUP BY a WITH ROLLUP ORDER BY MATCH (a) AGAINST ('abc');

允许在 WHERE 子句中将 MATCH() 与汇总列一起使用。

全文搜索有三种类型

  • 自然语言搜索将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。除了双引号 (") 字符外,没有特殊运算符。停用词列表适用。有关停用词列表的更多信息,请参见 第 14.9.4 节,“全文停用词”

    如果给出了 IN NATURAL LANGUAGE MODE 修饰符,或者没有给出修饰符,则全文搜索是自然语言搜索。有关更多信息,请参见 第 14.9.1 节,“自然语言全文搜索”

  • 布尔搜索使用特殊查询语言的规则解释搜索字符串。字符串包含要搜索的词。它还可以包含运算符,指定要求,例如词必须存在或不存在于匹配行中,或者词的权重应该高于或低于通常的权重。某些常用词(停用词)从搜索索引中省略,如果出现在搜索字符串中,则不匹配。 IN BOOLEAN MODE 修饰符指定布尔搜索。有关更多信息,请参见 第 14.9.2 节,“布尔全文搜索”

  • 查询扩展搜索是对自然语言搜索的修改。搜索字符串用于执行自然语言搜索。然后,从搜索返回的最相关行中添加词到搜索字符串,并再次执行搜索。查询返回第二次搜索的行。 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSIONWITH QUERY EXPANSION 修饰符指定查询扩展搜索。有关更多信息,请参见 第 14.9.3 节,“带有查询扩展的全文搜索”

有关 FULLTEXT 查询性能的信息,请参见 第 10.3.5 节,“列索引”

有关 InnoDB FULLTEXT 索引的更多信息,请参见 第 17.6.2.4 节,“InnoDB 全文索引”

全文搜索的约束列在 第 14.9.5 节,“全文搜索限制” 中。

The myisam_ftdump 实用程序转储 MyISAM 全文索引的内容。这对于调试全文查询可能很有用。请参阅 第 6.6.3 节,“myisam_ftdump — 显示全文索引信息”