すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:フルテキストインデックスの作成

最終更新日:Mar 29, 2026

フルテキストインデックスを使用すると、AnalyticDB for MySQL の VARCHAR 型カラムに対して全文検索クエリを実行できます。このページでは、新規テーブルおよび既存テーブルに対するフルテキストインデックスの作成、確認、および削除方法について説明します。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

  • AnalyticDB for MySQL クラスターが V3.1.4.9 以降(推奨:V3.1.4.17 以降)で実行されていること

クラスターのバージョンを確認するには、「AnalyticDB for MySQL クラスターのバージョンを確認する方法」をご参照ください。

制限事項

  • フルテキストインデックスは一度に 1 つのカラムにのみ作成できます。複数のカラムをインデックス化する場合は、各カラムに対して個別の FULLTEXT 文を実行する必要があります。

  • フルテキストインデックスは VARCHAR 型のカラムでのみサポートされます。

仕組み

AnalyticDB for MySQL のフルテキストインデックスは、データの書き込みタイミングによって適用方法が異なります。

  • 新規に書き込まれたデータ — リアルタイムでインデックス化され、追加の手順は不要です。

  • 既存データ — 自動的にインデックス化されません。インデックスを追加した後、BUILD TABLE ... force=true; を実行して既存の行をインデックス化する必要があります。BUILD タスクが完了するまで、既存データに対するクエリは高速化されません。

テーブル作成時にフルテキストインデックスを作成する

構文

CREATE TABLE [IF NOT EXISTS] table_name (
  column_name column_type [column_attributes] [column_constraints] [COMMENT 'string'],
  [FULLTEXT [INDEX|KEY] [index_name] (column_name) [index_option]],
  ...
)
table_attribute
[partition_options]
[AS] query_expression
COMMENT 'string'

ここで index_option は以下のとおりです。

-- アナライザを指定(省略可):
WITH ANALYZER analyzer_name

-- カスタム辞書を指定(省略可):
WITH DICT tbl_dict_name

パラメーター

パラメーター説明
table_nameテーブル名。1~127 文字(英数字またはアンダースコア)で、先頭は英字またはアンダースコアである必要があります。異なるデータベースで同じ名前のテーブルを区別するには、db_name.table_name 形式を使用します。
column_nameカラム名。1~127 文字(英数字またはアンダースコア)で、先頭は英字またはアンダースコアである必要があります。
column_typeカラムのデータの型。少なくとも 1 つのカラムが VARCHAR 型である必要があります。サポートされるデータの型については、「基本的なデータの型」をご参照ください。
column_attributesカラムの属性。詳細については、「CREATE TABLE」をご参照ください。
column_constraintsカラムの制約。詳細については、「CREATE TABLE」をご参照ください。
FULLTEXTフルテキストインデックスを宣言します。
INDEX|KEYインデックスのキーワード識別子。INDEX または KEY のいずれかを使用できます。
index_nameフルテキストインデックスの名前。
analyzer_name形態素解析に使用するアナライザ。省略した場合はデフォルトのアナライザが使用されます。利用可能なアナライザについては、「フルテキストインデックス用のアナライザ」をご参照ください。
tbl_dict_name使用するカスタム辞書。詳細については、「フルテキストインデックス用のカスタム辞書」をご参照ください。

content カラムにフルテキストインデックスを持つ tbl_fulltext_name という名前のテーブルを作成します。

CREATE TABLE `tbl_fulltext_name` (
  `id` int,
  `content` varchar,
  `keyword` varchar,
  FULLTEXT INDEX fidx_c(`content`),
  PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);

インデックスが作成されたことを確認します。

SHOW INDEX FROM tbl_fulltext_name;

期待される出力:

+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table             | Non_unique | Key_name      | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tbl_fulltext_name |          0 | PRIMARY       |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl_fulltext_name |          1 | id_0_idx      |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl_fulltext_name |          1 | keyword_2_idx |            1 | keyword     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl_fulltext_name |          1 | fidx_c        |            1 | content     | A         |           0 |     NULL | NULL   |      | FULLTEXT   |         |               |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Index_type = FULLTEXT かつ fidx_c のエントリにより、インデックスが正常に作成されたことが確認できます。

既存テーブルにフルテキストインデックスを追加する

構文

ALTER TABLE `table_name` ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]

以下の手順で、既存テーブルにフルテキストインデックスを追加し、その既存データをインデックス化します。

  1. tbl_fulltext_name という名前のテーブルを作成します。

    CREATE TABLE `tbl_fulltext_name` (
      `id` int,
      `content` varchar,
      `keyword` varchar,
      FULLTEXT INDEX fidx_c(`content`),
      PRIMARY KEY (`id`)
    ) DISTRIBUTED BY HASH(id) INDEX_ALL = 'N';
  2. standard アナライザを使用して、keyword カラムに fidx_k という名前のフルテキストインデックスを追加します。

    アナライザを指定しない場合、デフォルトのアナライザが使用されます。利用可能なアナライザについては、「フルテキストインデックス用のアナライザ」をご参照ください。
    ALTER TABLE `tbl_fulltext_name` ADD FULLTEXT INDEX fidx_k(`keyword`) WITH ANALYZER standard;
  3. 既存の既存データのインデックスをビルドします。ステップ 2 より前に書き込まれた行は、この BUILD タスクが完了するまで検索できません。

    BUILD TABLE `tbl_fulltext_name` force=true;

    必要な時間はテーブル内のデータ量によって異なります。

フルテキストインデックスを削除する

構文

ALTER TABLE table_name DROP FULLTEXT INDEX index_name;

tbl_fulltext_name からフルテキストインデックス fidx_k を削除します。

ALTER TABLE `tbl_fulltext_name` DROP FULLTEXT INDEX fidx_k;

次のステップ