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

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

最終更新日:Jun 11, 2024

このトピックでは、AnalyticDB for MySQLでフルテキストクエリのフルテキストインデックスを作成する方法について説明します。

前提条件

V3.1.4.9以降のAnalyticDB for MySQLクラスターが作成されます。

説明

制限事項

  • フルテキストインデックスは、毎回1つの列にのみ作成できます。 複数の列にフルテキストインデックスを作成する場合は、各列にフルテキストインデックスを作成できます。

  • フルテキストインデックスは、VARCHARタイプの列にのみ作成できます。

可視性ポリシー

  • AnalyticDB for MySQLのフルテキストインデックスは、新しく書き込まれたデータにリアルタイムで表示されます。

  • 履歴データにフルテキストインデックスを作成するには、BUILD TABLE 'Table name' force=true; ステートメントを実行する必要があります。

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

構文

CREATE TABLE [存在しない場合] 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
   コメント '文字列' 

パラメーター

パラメーター

説明

table_name

テーブルの名前。

テーブル名は1 ~ 127文字で、英数字、アンダースコア (_) を使用できます。 テーブル名は、英字またはアンダースコア (_) で始まる必要があります。 異なるデータベース間で同じ名前を共有するテーブルを区別するには、db_name.table_name形式でテーブル名を指定します。

column_name

テーブルに追加する列の名前。

列名は1 ~ 127文字で、英数字、アンダースコア (_) を使用できます。 列名は英字またはアンダースコア (_) で始める必要があります。

column_type

列のデータ型。 少なくとも1つの列がVARCHAR型である必要があります。

AnalyticDB For MySQLでサポートされているデータ型の詳細については、「基本データ型」をご参照ください。

column_attributes

列の属性。 AnalyticDB For MySQLでサポートされている列属性の詳細については、「CREATE TABLE」をご参照ください。

column_constraints

列の制約。The constraints of the column. AnalyticDB For MySQLでサポートされている列制約の詳細については、「CREATE TABLE」をご参照ください。

FULLTEXT

フルテキストインデックスを定義します。

インデックス | キー

フルテキストインデックスのキーワード識別子。 INDEXまたはKEYにすることができます。

index_name

フルテキストインデックスの名前。

column_name

フルテキストインデックスを作成する列の名前。 列はVARCHAR型でなければなりません。

index_option

フルテキストインデックスに使用するアナライザーとカスタム辞書を指定します。

  • WITH ANALYZER analyzer_name: フルテキストインデックスに使用されるアナライザーを指定します。 AnalyticDB For MySQLでサポートされているアナライザーの詳細については、「analyzers for full-text indexes」をご参照ください。

  • WITH DICT tbl_dict_name: フルテキストインデックスに使用されるカスタム辞書を指定します。 AnalyticDB For MySQLでサポートされているカスタム辞書の詳細については、「フルテキストインデックスのカスタム辞書」をご参照ください。

tbl_fulltext_nameという名前のテーブルを作成するときに、content列にフルテキストインデックスを作成します。

CREATE TABLE 'tbl_fulltext_name '(
  'id' int、
  「コンテンツ」varchar、
  「キーワード」varchar、
  FULLTEXT INDEX fidx_c('content') 、
  主要なキー ('id')
) ハッシュによる分配 (id); 

テーブルのインデックスを照会します。

ショーインデックスからtbl_fulltext_name;

サンプル結果:

------------------------------------------------------------------------------------------------- -- -- -- -------------------------
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | カーディナリティ | Sub_part | パック | Null | Index_type | コメント | 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 | キーワード | A | 0 | NULL | NULL | | BTREE | |
| tbl_fulltext_name | 1 | fidx_c | 1 | コンテンツ | A | 0 | NULL | NULL | | FULLTEXT | |
--------------------------------------------------------------------------------------------- -- -----------------------------------

既存のテーブルのフルテキストインデックスを作成する

構文

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、
      「コンテンツ」varchar、
      「キーワード」varchar、
      FULLTEXT INDEX fidx_c('content') 、 
      主要なキー ('id')
    ) ハッシュによる分配 (id) INDEX_ALL = 'N'; 
  2. keyword列にfidx_kという名前のフルテキストインデックスを作成し、標準アナライザーを指定します。

    説明

    アナライザーを指定しない場合、既定のアナライザーが使用されます。 詳細については、「フルテキストインデックスのアナライザー」をご参照ください。

    ALTER TABLE 'tbl_fulltext_name 'ADD FULLTEXT INDEX fidx_k('keyword') ANALYZER標準;
  3. 履歴データにフルテキストインデックスを作成するには、次のステートメントを実行します。 インデックスは、ビルドタスクが完了した後にのみ有効になります。 フルテキストインデックスの作成にかかる時間は、データ量に関連しています。

    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;