### 12.10.5 全文限制

-   支持全文搜索[`InnoDB`](innodb-storage-engine.html)和[`MyISAM`](myisam-storage-engine.html)仅限表。

-   分区表不支持全文搜索。看[第 24.6 节，“分区的限制和限制”](partitioning-limitations.html).

-   全文搜索可用于大多数多字节字符集。唯一的例外是对于 Unicode，`utf8`可以使用字符集，但不能使用`ucs2`字符集。虽然`全文`索引`ucs2`无法使用列，您可以执行`在布尔模式下`搜索`ucs2`没有此类索引的列。

    备注为`utf8`也适用于`utf8mb4`, 和备注`ucs2`也适用于`utf16`,`utf16le`， 和`utf32`.

-   汉语和日语等表意语言没有单词分隔符。因此，内置的全文解析器*无法确定这些语言和其他此类语言中单词的开头和结尾*.

    提供支持中文、日文和韩文 (CJK) 的基于字符的 ngram 全文解析器和支持日文的基于词的 MeCab 解析器插件，以供与`InnoDB`和`MyISAM`表。

-   尽管支持在单个表中使用多个字符集，但一个表中的所有列`全文`index 必须使用相同的字符集和排序规则。

-   这[`匹配（）`](fulltext-search.html#function_match)列列表必须与某些中的列列表完全匹配`全文`表的索引定义，除非这[`匹配（）`](fulltext-search.html#function_match)是`在布尔模式下`在一个`MyISAM`桌子。为了`MyISAM`表，布尔模式搜索可以在非索引列上完成，尽管它们可能很慢。

-   论据`反对（）`必须是在查询评估期间保持不变的字符串值。例如，这排除了表格列，因为每行可能不同。

    从 MySQL 8.0.28 开始，参数[`匹配（）`](fulltext-search.html#function_match)不能使用汇总列。

-   索引提示更受限制`全文`搜索比非`全文`搜索。看[第 8.9.4 节，“索引提示”](index-hints.html).

-   为了`InnoDB`, 所有 DML 操作 ([`插入`](insert.html),[`更新`](update.html),[`删除`](delete.html)) 涉及具有全文索引的列在事务提交时处理。例如，对于一个`插入`操作中，插入的字符串被标记化并分解为单个单词。然后在提交事务时将各个单词添加到全文索引表中。因此，全文搜索仅返回已提交的数据。

-   '%' 字符不是全文搜索支持的通配符。
