文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  全文检索限制

14.9.5 全文检索限制

  • InnoDBMyISAM 表支持全文检索。

  • 分区表不支持全文检索。请参阅 第 26.6 节,“分区限制和局限性”

  • 大多数多字节字符集都可以使用全文检索。例外是对于 Unicode,可以使用 utf8mb3utf8mb4 字符集,但不能使用 ucs2 字符集。虽然 FULLTEXT 索引不能用于 ucs2 列,但可以在没有此类索引的 ucs2 列上执行 IN BOOLEAN MODE 搜索。

    utf8mb3 的备注也适用于 utf8mb4,而 ucs2 的备注也适用于 utf16utf16leutf32

  • 汉语和日语等表意文字语言没有词语分隔符。因此,内置全文解析器无法确定这些语言和其他此类语言中的词语的开始和结束位置

    提供了一个基于字符的 ngram 全文解析器,它支持中文、日语和韩语 (CJK),以及一个支持日语的基于词语的 MeCab 解析器插件,可与 InnoDBMyISAM 表一起使用。

  • 尽管在单个表内支持使用多个字符集,但 FULLTEXT 索引中的所有列必须使用相同的字符集和排序规则。

  • MATCH() 列列表必须与表的某个 FULLTEXT 索引定义中的列列表完全匹配,除非此 MATCH()MyISAM 表上的 IN BOOLEAN MODE。对于 MyISAM 表,可以在非索引列上进行布尔模式搜索,尽管速度可能很慢。

  • AGAINST() 的参数必须是在查询求值过程中保持不变的字符串值。例如,这排除了表列,因为该列在每行中都可能不同。

    MATCH() 的参数不能使用汇总列。

  • 索引提示对于 FULLTEXT 搜索的限制比对于非 FULLTEXT 搜索的限制更多。请参阅 第 10.9.4 节,“索引提示”

  • 对于 InnoDB,所有涉及具有全文索引的列的 DML 操作(INSERTUPDATEDELETE)将在事务提交时处理。例如,对于 INSERT 操作,插入的字符串将被分词并分解为单个词语。然后,在事务提交时,这些单个词语将被添加到全文索引表中。因此,全文检索仅返回已提交的数据。

  • '%' 字符不是全文检索支持的通配符字符。