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