12.9.5 全文限制
-
分区 table 不支持全文搜索。参见第 22.6 节“分区的限制和限制”。
-
全文搜索可用于大多数多字节字符集。exception 是,对于 Unicode,可以使用
utf8
字符集,但不能使用ucs2
字符集。尽管无法使用ucs2
列上的FULLTEXT
索引,但是您可以在没有此类索引的ucs2
列上执行IN BOOLEAN MODE
搜索。
utf8
的 Comments 也适用于utf8mb4
,而ucs2
的 Comments 也适用于utf16
,utf16le
和utf32
。
- table 意语言(例如中文和日语)没有单词定界符。因此,内置的全文分析器*无法确定单词在这些语言和其他此类语言中的开头和结尾。
提供了支持InnoDB
和MyISAM
table 的基于字符的 ngram 全文语法分析器,该语法支持中文,日语和朝鲜语(CJK),以及基于单词的 MeCab 语法分析器插件,该插件支持日语。
-
尽管支持在单个 table 中使用多个字符集,但是
FULLTEXT
索引中的所有列都必须使用相同的字符集和排序规则。 -
MATCH()列列 table 必须与该 table 的
FULLTEXT
索引定义中的列列 table 完全匹配,除非此MATCH()在MyISAM
table 上为IN BOOLEAN MODE
。对于MyISAM
table,可以在非索引列上进行布尔模式搜索,尽管它们可能很慢。 -
AGAINST()
的参数必须是在查询评估期间恒定的字符串值。例如,这排除了一个 table 列,因为每行可能不同。 -
FULLTEXT
搜索的索引提示比非FULLTEXT
搜索的索引提示更受限制。参见第 8.9.4 节“索引提示”。 -
对于
InnoDB
,涉及具有全文索引列的所有 DML 操作(INSERT,UPDATE,DELETE)在事务提交时进行处理。例如,对于INSERT
操作,插入的字符串将被标记化并分解为单个单词。然后在提交事务时将各个单词添加到全文索引 table 中。结果,全文搜索仅返回已提交的数据。 -
全文搜索不支持'%'字符。