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