Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


12.9.5 全文制限

  • 全文検索は、InnoDB および MyISAM テーブルでのみサポートされています。InnoDB テーブルで FULLTEXT インデックスがサポートされるようにするには、MySQL 5.6.4 以上が必要です。

  • パーティション化されたテーブルでは、全文検索がサポートされていません。セクション19.6「パーティショニングの制約と制限」を参照してください。

  • 全文検索は、ほとんどのマルチバイト文字セットで使用できます。例外として、Unicode では、utf8 文字セットは使用できますが、ucs2 文字セットは使用できません。ucs2 カラム上では FULLTEXT インデックスを使用できませんが、このようなインデックスが含まれない ucs2 上で IN BOOLEAN MODE 検索を実行することはできます。

    utf8 に関する備考は utf8mb4 にも適用され、ucs2 に関する備考は utf16utf16le、および utf32 にも適用されます。

  • 中国語や日本語のような表意文字を使用する言語には、単語の区切り文字がありません。したがって、FULLTEXT パーサーでは、このような言語で単語の初めと終わりを特定できません。この意味および問題の一部の回避策については、セクション12.9「全文検索関数」で説明されています。

  • 単一テーブル内で複数の文字セットを使用することはサポートされていますが、FULLTEXT インデックス内のすべてのカラムで同じ文字セットおよび照合順序が使用される必要があります。

  • MATCH() カラムリストは、この MATCH()MyISAM テーブル上の IN BOOLEAN MODE である場合を除いて、テーブルの一部の FULLTEXT インデックス定義に含まれるカラムリストに完全に一致する必要があります。MyISAM テーブルでは、インデックスが付いていないカラムでもブールモード検索を実行できます。ただし、検索が遅くなる可能性があります。

  • AGAINST() への引数は、クエリー評価時に定数である文字列値にする必要があります。たとえば、テーブルカラムは、行ごとに異なる可能性があるため除外されます。

  • FULLTEXT 以外の検索の場合よりも FULLTEXT 検索の場合の方が、インデックスヒントに対する制限が多くなります。セクション13.2.9.3「インデックスヒントの構文」を参照してください。

  • InnoDB では、全文インデックスを含むカラムを必要とするすべての DML 演算子 (INSERTUPDATEDELETE) は、トランザクションのコミット時に処理されます。たとえば、INSERT 演算では、挿入された文字列がトークン化され、個々の単語に分解されます。その後、個々の単語は、トランザクションのコミット時に全文インデックステーブルに追加されます。その結果、全文検索ではコミットされたデータのみが返されます。


User Comments
  Posted by c f on June 4, 2006
Indexed columns must <= 1000 byte encoding.
  Posted by Howard Johnson on July 2, 2009
There is also a limitation of at most one other field match, i.e.

SELECT * FROM table WHERE MATCH (fieldlist) AGAINST ('cows horses') AND ( field2= '5286');
  Posted by Rafael Gutierrez Martinez on June 2, 2010
To create a fulltext index, all fields have to be of the same charset.
  Posted by Nasser W on September 2, 2013
MySQL fulltext search works well for Arabic. Just make sure of the following where needed:

1. `COLLATION = utf8_unicode_ci` & `CHARACTER SET = utf8`. (Databases, Tables, and Columns).
2. Index words of 3 letters and more. This is Very Important for Arabic, `ft_min_word_len = 3` (see `show variables like "ft_%";`)
3. Check the version of MySQL (5.5 or 5.6), and Engine (InnoDb or MyIsam)
Sign Up Login You must be logged in to post a comment.