分割資料表不支援全文檢索。請參閱第 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()
是在MyISAM
資料表上以IN BOOLEAN MODE
執行,否則MATCH()
資料行清單必須與資料表的某些FULLTEXT
索引定義中的資料行清單完全相符。對於MyISAM
資料表,可以在未建立索引的資料行上進行布林模式搜尋,但速度可能會很慢。AGAINST()
的引數必須是在查詢評估期間保持不變的字串值。例如,這排除資料表資料行,因為每個資料列的值可能會有所不同。MATCH()
的引數無法使用彙總資料行。對於
FULLTEXT
搜尋,索引提示的限制比非FULLTEXT
搜尋更多。請參閱第 10.9.4 節,「索引提示」。對於
InnoDB
,所有涉及具有全文索引的資料行的 DML 操作 (INSERT
、UPDATE
、DELETE
) 會在交易認可時間進行處理。例如,對於INSERT
操作,插入的字串會被權杖化,並分解為個別單字。然後,當交易認可時,會將個別單字新增至全文索引資料表。因此,全文檢索只會傳回已認可的資料。「%」字元不是全文檢索支援的萬用字元。