不支援分割資料表的全文檢索。請參閱 第 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()
的引數必須是在查詢評估期間常數的字串值。例如,這排除資料表資料行,因為每個資料列的資料行可能不同。MATCH()
的引數不能使用彙總資料行。對於
FULLTEXT
搜尋,索引提示比非FULLTEXT
搜尋的索引提示更受限制。請參閱 第 10.9.4 節「索引提示」。對於
InnoDB
,所有涉及具有全文索引的資料行的 DML 操作 (INSERT
、UPDATE
、DELETE
) 會在交易提交時處理。例如,對於INSERT
操作,插入的字串會被標記化並分解為個別單字。然後,當交易提交時,個別單字會新增至全文索引資料表。因此,全文檢索只會傳回已提交的資料。'%' 字元不是全文檢索支援的萬用字元。