INNODB_FT_INDEX_TABLE
テーブルには、InnoDB
テーブルの FULLTEXT
インデックスに対してテキスト検索を処理するために使用される、転置インデックスに関する情報が表示されます。
このテーブルをクエリーする前に、構成変数 innodb_ft_aux_table
を、test/articles
など、FULLTEXT
インデックスを含むテーブルの名前 (データベース名など) に設定します。
関連する使用法と使用例については、セクション14.14.4「InnoDB INFORMATION_SCHEMA FULLTEXT インデックステーブル」を参照してください。
表 21.24 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
の値を設定するまで空です。次の例は、innodb_ft_aux_table
オプションを使用して、指定されたテーブルのFULLTEXT
インデックスに関する情報を表示する方法について説明します。新しく挿入された行の情報がINNODB_FT_INDEX_TABLE
に表示される前に、FULLTEXT
インデックスキャッシュは、ディスクにフラッシュされる必要があります。これは、innodb_optimize_fulltext_only=ON
でインデックスのついたテーブルで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 will 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; Query OK, 0 rows affected (0.00 sec) mysql> OPTIMIZE TABLE articles; +---------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+----------+----------+----------+ | test.articles | optimize | status | OK | +---------------+----------+----------+----------+ 1 row in set (0.00 sec) mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles'; Query OK, 0 rows affected (0.00 sec) mysql> USE INFORMATION_SCHEMA; mysql> SELECT word, doc_count, doc_id, position FROM 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 | +------------+-----------+--------+----------+ 5 rows in set (0.01 sec)
DESCRIBE
またはSHOW COLUMNS
を使用して、データ型とデフォルト値を含む、このテーブルのカラムに関する追加情報を表示します。このテーブルをクエリーするには
PROCESS
権限が必要です。InnoDB
FULLTEXT
検索の詳細は、セクション14.2.13.3「FULLTEXT インデックス」およびセクション12.9「全文検索関数」を参照してください。