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 和分解成单个词语。然后,在事务提交时,将单个词语添加到全文索引表中。因此,全文搜索只返回已提交的事务数据。 -
'%' 字符不支持为全文搜索的通配字符。