Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Full-Text Restrictions

14.9.5 全文限制

  • 全文搜索仅支持InnoDBMyISAM表。

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

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

    utf8mb3的备注也适用于utf8mb4ucs2的备注也适用于utf16utf16leutf32

  • ideographic语言,如中文和日语,不具有词语分隔符。因此,内置的全文解析器无法确定这些语言中的单词开始和结束位置

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

  • 虽然在一个表中可以使用多个字符集,但是所有列在一个FULLTEXT索引中必须使用相同的字符集和排序规则。

  • MATCH() 列表必须与某个FULLTEXT索引定义中的列列表完全匹配,除非在一个MyISAM表上使用MATCH()IN BOOLEAN MODE。对于MyISAM表,布尔模式搜索可以在非索引列上执行,但是可能会很慢。

  • AGAINST() 的参数必须是一个查询评估期间不变的字符串值,这个规则排除了例如一个表列,因为每行都不同。

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

  • FULLTEXT 搜索的索引提示比非 FULLTEXT 搜索的索引提示更有限。见第10.9.4节,“索引提示”

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

  • '%' 字符不支持为全文搜索的通配字符。