# 12.10.5 全文限制

  • 支持全文搜索InnoDBMyISAM仅限表。

  • 分区表不支持全文搜索。看第 24.6 节,“分区的限制和限制”.

  • 全文搜索可用于大多数多字节字符集。唯一的例外是对于 Unicode,utf8可以使用字符集,但不能使用ucs2字符集。虽然全文索引ucs2无法使用列,您可以执行在布尔模式下搜索ucs2没有此类索引的列。

    备注为utf8也适用于utf8mb4, 和备注ucs2也适用于utf16,utf16le, 和utf32.

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

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

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

  • 匹配()列列表必须与某些中的列列表完全匹配全文表的索引定义,除非这匹配()在布尔模式下在一个MyISAM桌子。为了MyISAM表,布尔模式搜索可以在非索引列上完成,尽管它们可能很慢。

  • 论据反对()必须是在查询评估期间保持不变的字符串值。例如,这排除了表格列,因为每行可能不同。

    从 MySQL 8.0.28 开始,参数匹配()不能使用汇总列。

  • 索引提示更受限制全文搜索比非全文搜索。看第 8.9.4 节,“索引提示”.

  • 为了InnoDB, 所有 DML 操作 (插入,更新,删除) 涉及具有全文索引的列在事务提交时处理。例如,对于一个插入操作中,插入的字符串被标记化并分解为单个单词。然后在提交事务时将各个单词添加到全文索引表中。因此,全文搜索仅返回已提交的数据。

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