このトピックでは、AnalyticDB for MySQLでフルテキストクエリのフルテキストインデックスを作成する方法について説明します。
前提条件
V3.1.4.9以降のAnalyticDB for MySQLクラスターが作成されます。
V3.1.4.17以降のAnalyticDB for MySQLクラスターを使用することを推奨します。
AnalyticDB For MySQLクラスターのマイナーバージョンを照会する方法については、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文字で、英数字、アンダースコア (_) を使用できます。 テーブル名は、英字またはアンダースコア (_) で始まる必要があります。 異なるデータベース間で同じ名前を共有するテーブルを区別するには、 |
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 | フルテキストインデックスに使用するアナライザーとカスタム辞書を指定します。
|
例
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]
パラメーター
パラメーターの詳細については、このトピックの「テーブルを作成するときにフルテキストインデックスを作成する」をご参照ください。
例
tbl_fulltext_name
という名前のテーブルを作成します。CREATE TABLE 'tbl_fulltext_name '( 'id' int、 「コンテンツ」varchar、 「キーワード」varchar、 FULLTEXT INDEX fidx_c('content') 、 主要なキー ('id') ) ハッシュによる分配 (id) INDEX_ALL = 'N';
keyword
列にfidx_kという名前のフルテキストインデックスを作成し、標準アナライザーを指定します。説明アナライザーを指定しない場合、既定のアナライザーが使用されます。 詳細については、「フルテキストインデックスのアナライザー」をご参照ください。
ALTER TABLE 'tbl_fulltext_name 'ADD FULLTEXT INDEX fidx_k('keyword') ANALYZER標準;
履歴データにフルテキストインデックスを作成するには、次のステートメントを実行します。 インデックスは、ビルドタスクが完了した後にのみ有効になります。 フルテキストインデックスの作成にかかる時間は、データ量に関連しています。
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;