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