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