INNODB_FT_INDEX_TABLE
テーブルは、InnoDB
テーブルの FULLTEXT
インデックスに対するテキスト検索の処理に使用される逆インデックスに関する情報を提供します。
このテーブルは最初は空です。 クエリーする前に、innodb_ft_aux_table
システム変数の値を、FULLTEXT
インデックスを含むテーブルの名前 (test/articles
など) に設定します。
関連する使用法と使用例については、セクション15.15.4「InnoDB INFORMATION_SCHEMA FULLTEXT インデックステーブル」を参照してください。
INNODB_FT_INDEX_TABLE
テーブルには、次のカラムがあります:
-
WORD
FULLTEXT
の一部であるカラムのテキストから抽出された単語。 -
FIRST_DOC_ID
この単語が
FULLTEXT
インデックスに出現する最初のドキュメント ID。 -
LAST_DOC_ID
この単語が
FULLTEXT
インデックスに出現する最後のドキュメント ID。 -
DOC_COUNT
この単語が
FULLTEXT
インデックスに出現する行数。 同じ単語は、DOC_ID
値とPOSITION
値の組み合わせごとに一度ずつ、キャッシュテーブル内で複数回現れる可能性があります。 -
DOC_ID
単語を含む行のドキュメント ID。 この値は、基礎となるテーブルに定義した ID カラムの値を反映しているか、テーブルに適切なカラムが含まれていない場合に
InnoDB
によって生成される順序値である可能性があります。 -
POSITION
DOC_ID
値で識別された関連ドキュメント内のこの単語の特定のインスタンス位置。
メモ
-
このテーブルは最初は空です。 クエリーする前に、
innodb_ft_aux_table
システム変数の値を、FULLTEXT
インデックスを含むテーブルの名前 (test/articles
など) に設定します。 次の例は、innodb_ft_aux_table
システム変数を使用して、指定したテーブルのFULLTEXT
インデックスに関する情報を表示する方法を示しています。 新しく挿入された行の情報がINNODB_FT_INDEX_TABLE
に表示される前に、FULLTEXT
インデックスキャッシュは、ディスクにフラッシュされる必要があります。 これを行うには、innodb_optimize_fulltext_only
システム変数を有効にして、インデックス付けされたテーブルに対してOPTIMIZE TABLE
操作を実行します。 (この例では、変数は一時的にのみ有効にすることを意図しているため、最後で再度無効にします。)mysql> USE test; mysql> CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) ) ENGINE=InnoDB; mysql> INSERT INTO articles (title,body) VALUES ('MySQL Tutorial','DBMS stands for DataBase ...'), ('How To Use MySQL Well','After you went through a ...'), ('Optimizing MySQL','In this tutorial we show ...'), ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), ('MySQL vs. YourSQL','In the following database comparison ...'), ('MySQL Security','When configured properly, MySQL ...'); mysql> SET GLOBAL innodb_optimize_fulltext_only=ON; mysql> OPTIMIZE TABLE articles; +---------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+----------+----------+----------+ | test.articles | optimize | status | OK | +---------------+----------+----------+----------+ mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles'; mysql> SELECT WORD, DOC_COUNT, DOC_ID, POSITION FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE LIMIT 5; +------------+-----------+--------+----------+ | WORD | DOC_COUNT | DOC_ID | POSITION | +------------+-----------+--------+----------+ | 1001 | 1 | 4 | 0 | | after | 1 | 2 | 22 | | comparison | 1 | 5 | 44 | | configured | 1 | 6 | 20 | | database | 2 | 1 | 31 | +------------+-----------+--------+----------+ mysql> SET GLOBAL innodb_optimize_fulltext_only=OFF;
このテーブルをクエリーするには
PROCESS
権限が必要です。INFORMATION_SCHEMA
COLUMNS
テーブルまたはSHOW COLUMNS
ステートメントを使用して、データ型やデフォルト値など、このテーブルのカラムに関する追加情報を表示します。InnoDB
FULLTEXT
検索の詳細は、セクション15.6.2.4「InnoDB FULLTEXT インデックス」およびセクション12.10「全文検索関数」を参照してください。