12.9.5 全文限制

  • InnoDBMyISAMtable 支持全文搜索。

  • 分区 table 不支持全文搜索。参见第 22.6 节“分区的限制和限制”

  • 全文搜索可用于大多数多字节字符集。exception 是,对于 Unicode,可以使用utf8字符集,但不能使用ucs2字符集。尽管无法使用ucs2列上的FULLTEXT索引,但是您可以在没有此类索引的ucs2列上执行IN BOOLEAN MODE搜索。

utf8的 Comments 也适用于utf8mb4,而ucs2的 Comments 也适用于utf16utf16leutf32

  • table 意语言(例如中文和日语)没有单词定界符。因此,内置的全文分析器*无法确定单词在这些语言和其他此类语言中的开头和结尾。

提供了支持InnoDBMyISAMtable 的基于字符的 ngram 全文语法分析器,该语法支持中文,日语和朝鲜语(CJK),以及基于单词的 MeCab 语法分析器插件,该插件支持日语。

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

  • MATCH()列列 table 必须与该 table 的FULLTEXT索引定义中的列列 table 完全匹配,除非此MATCH()MyISAMtable 上为IN BOOLEAN MODE。对于MyISAMtable,可以在非索引列上进行布尔模式搜索,尽管它们可能很慢。

  • AGAINST()的参数必须是在查询评估期间恒定的字符串值。例如,这排除了一个 table 列,因为每行可能不同。

  • FULLTEXT搜索的索引提示比非FULLTEXT搜索的索引提示更受限制。参见第 8.9.4 节“索引提示”

  • 对于InnoDB,涉及具有全文索引列的所有 DML 操作(INSERTUPDATEDELETE)在事务提交时进行处理。例如,对于INSERT操作,插入的字符串将被标记化并分解为单个单词。然后在提交事务时将各个单词添加到全文索引 table 中。结果,全文搜索仅返回已提交的数据。

  • 全文搜索不支持'%'字符。