14.9.5 全文限制
-
不支持分区表的全文搜索。请参阅第26.6节,“分区限制和限制”。
-
大多数多字节字符集都可以与全文搜索一起使用。唯一的例外是 Unicode,可以使用
utf8mb3或utf8mb4字符集,但不能使用ucs2字符集。虽然FULLTEXT索引在ucs2列上不可用,但是可以对没有索引的ucs2列进行IN BOOLEAN MODE搜索。utf8mb3的备注也适用于utf8mb4,ucs2的备注也适用于utf16、utf16le和utf32。 -
ideographic语言,如中文和日语,不具有词语分隔符。因此,内置的全文解析器无法确定这些语言中的单词开始和结束位置。
提供了支持中文、日文和韩文(CJK)的基于字符的ngram全文搜索解析器,以及支持日文的基于词的MeCab插件,用于与
InnoDB和MyISAM表一起使用。 -
虽然在一个表中可以使用多个字符集,但是所有列在一个
FULLTEXT索引中必须使用相同的字符集和排序规则。 -
MATCH()列表必须与某个FULLTEXT索引定义中的列列表完全匹配,除非在一个MyISAM表上使用MATCH()是IN BOOLEAN MODE。对于MyISAM表,布尔模式搜索可以在非索引列上执行,但是可能会很慢。 -
AGAINST()的参数必须是一个查询评估期间不变的字符串值,这个规则排除了例如一个表列,因为每行都不同。MATCH()的参数不能使用 rollup 列。 -
FULLTEXT 搜索的索引提示比非 FULLTEXT 搜索的索引提示更有限。见第10.9.4节,“索引提示”。
-
对于
InnoDB,所有 DML 操作(INSERT、UPDATE、DELETE),涉及全文索引的列将在事务提交时处理。例如,对于一个INSERT操作,插入的字符串将被 tokenize 和分解成单个词语。然后,在事务提交时,将单个词语添加到全文索引表中。因此,全文搜索只返回已提交的事务数据。 -
'%' 字符不支持为全文搜索的通配字符。