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

AnalyticDB:フルテキストインデックス用アナライザ

最終更新日:Mar 28, 2026

AnalyticDB for MySQL は、フルテキストインデックス用に AliNLP、IK、Standard、Ngram、Edge_ngram、Pattern の6つの組み込みアナライザを提供しています。各アナライザは異なる形態素解析戦略を使用しており、言語要件、検索パターン (あいまい検索、プレフィックス検索、または完全に一致)、および中国語テキスト処理の必要性に基づいて選択してください。

アナライザの選択

アナライザ最適な用途対応言語カスタム辞書
AliNLP中国語および多言語のNLPベースの形態素解析中国語、英語、インドネシア語、マレー語、タイ語、ベトナム語、フランス語、スペイン語はい
IK設定可能な粒度を持つ中国語テキスト中国語はい
Standardストップワードフィルタリング付きの英語テキスト言語固有のルールはい
Ngramあいまい部分文字列検索任意はい
Edge_ngramプレフィックス検索と自動補完任意はい
Pattern正規表現によるカスタムデリミタベースの形態素解析任意いいえ

クラスターバージョンごとのデフォルトアナライザ:

  • V3.1.4.15より前のクラスター: AliNLPアナライザ

  • V3.1.4.15以降のクラスター: IKアナライザ

クラスターのマイナーバージョンを確認するには、「クラスターのマイナーバージョンを表示する方法

アナライザの指定

構文

FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];

パラメーター

パラメーター説明
idx_nameフルテキストインデックスの名前。
column_nameインデックスを作成するカラムの名前。
WITH ANALYZER analyzer_name使用するアナライザ。省略するとデフォルトのアナライザが使用されます。
WITH DICT tbl_dict_name適用するカスタム辞書。詳細については、「フルテキストインデックス用カスタム辞書」をご参照ください。

次のステートメントは、アナライザごとに1つずつ、6つのフルテキストインデックスを持つテーブルを作成します。

CREATE TABLE `tbl_fulltext_demo` (
  `id` int,
  `content` varchar,
  `content_alinlp` varchar,
  `content_ik` varchar,
  `content_standard` varchar,
  `content_ngram` varchar,
  `content_edge_ngram` varchar,
  FULLTEXT INDEX fidx_c(`content`),                                           -- Default analyzer
  FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,
  FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,
  FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,
  FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,
  FULLTEXT INDEX fidx_edge_ngram(`content_edge_ngram`) WITH ANALYZER edge_ngram,
  PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);

形態素解析結果のプレビュー

アナライザをコミットする前に、テキストがどのように形態素解析されるかをテストしてください。各アナライザには専用のテスト関数があり、指定された入力文字列のトークンリストを返します。

すべての形態素解析テストクエリに /*+ mode=two_phase*/ をプレフィックスとして追加しないと、正しく実行されません。

次の例では、すべての​​アナライザで同じ入力 — 'Hello world' — を使用しているため、出力を直接比較できます。

アナライザテスト関数'Hello world'
AliNLPfulltext_alinlp_test()[hello, , world]
IKfulltext_ik_test()[hello, world, or]
Standardfulltext_standard_test()[hello, world]
Ngram (デフォルトのトークンサイズ: 2)fulltext_ngram_test()[he, el, ll, lo, o , w, wo, or, rl, ld]
Edge_ngram (最小: 1, 最大: 2)fulltext_edge_ngram_test()[h, he]

使用法:

/*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');
[hello, world, or]
Patternアナライザは、SQLベースの形態素解析テストをサポートしていません。

AliNLPアナライザ

中国語および多言語テキストに最適です。AliNLPアナライザは、Alibaba Cloud と DAMO アカデミーによって自然言語処理 (NLP) テクノロジーを使用して開発されました。連続した自然言語テキストを意味のあるセグメントに形態素解析し、ユーザー定義のエンティティとストップワード用のカスタム辞書をサポートしています。

対応言語: 中国語、英語、インドネシア語、マレー語、タイ語、ベトナム語、フランス語、スペイン語

  • 英語テキストの形態素解析結果:

    /*+ mode=two_phase*/ SELECT fulltext_alinlp_test('Hello world');

    結果:

    [hello,  , world]

次の例は、デフォルト設定での形態素解析結果を示しています。

構成パラメーター

パラメーター説明デフォルト
FULLTEXT_SPLIT_GRANULARITYセグメンテーション粒度。2から8までの整数。2
FULLTEXT_FILTER_ST_CONVERT_ENABLED語幹変換を有効にします (例: menmancarscar)。false
FULLTEXT_TOKENIZER_CASE_SENSITIVE形態素解析が大文字と小文字を区別するかどうか。false

FULLTEXT_FILTER_PINYIN_ENABLE

ピンイン検索を有効にするかどうかを指定します。有効な値:

  • true: ピンイン検索を有効にします。

  • false (デフォルト): ピンイン検索を無効にします。

FULLTEXT_FILTER_PINYIN_ENABLE

ピンイン検索を有効にするかどうかを指定します。有効な値:

  • true: ピンイン検索を有効にします。

  • false (デフォルト): ピンイン検索を無効にします。

IKアナライザ

中国語テキストに最適です。IKアナライザは、オープンソースの軽量な中国語アナライザです。粗粒度と詳細粒度の2つのセグメンテーションモードをサポートし、エンティティとストップワード用のカスタム辞書を受け入れます。

  • 英語テキストの形態素解析結果:

    /*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');

    結果:

    [hello, world, or]

次の例は、デフォルト設定での形態素解析結果を示しています。

構成パラメーター

パラメーター説明デフォルト
CSTORE_IK_SEGMENTER_USE_SMART_ENABLEセグメンテーションモード。true = 粗粒度 (ik_smartモード); false = 詳細粒度 (ik_max_wordモード)。false
CSTORE_IK_SEGMENTER_LETTER_MIN_LENGTH最小セグメント長。2から16までの整数。3
CSTORE_IK_SEGMENTER_LETTER_MAX_LENGTH最大セグメント長。2から256までの整数。128

Standardアナライザ

英語テキストに最適です。Standardアナライザは言語固有のルールを適用します。英語の場合、テキストを小文字に変換し、ストップワードと句読点を削除してから形態素解析します。中国語の場合、テキストを個々の文字に分割します。カスタム辞書をサポートしています。

  • 英語テキストの形態素解析結果:

    /*+ mode=two_phase*/ SELECT fulltext_standard_test('Hello world');

    結果:

    [hello, world]

次の例は、デフォルト設定での形態素解析結果を示しています。

構成パラメーター

パラメーター説明デフォルト
FULLTEXT_MAX_TOKEN_LENGTH最大トークン長。1から1,048,576までの整数。255

Ngramアナライザ

あいまい部分文字列検索に最適です。Ngramアナライザは、テキストを固定長のすべての可能な部分文字列に分割するため、部分一致クエリに効果的です。カスタム辞書をサポートしています。

  • 英語テキストの形態素解析結果:

    /*+ mode=two_phase*/ SELECT fulltext_ngram_test('Hello world');

    結果:

    [he, el, ll, lo, o ,  w, wo, or, rl, ld]

次の例は、デフォルト設定での形態素解析結果を示しています。

構成パラメーター

パラメーター説明デフォルト
FULLTEXT_NGRAM_TOKEN_SIZEトークン長。1から8までの整数。2

Edge_ngramアナライザ

プレフィックス検索と自動補完 (入力時の検索) に最適です。Edge_ngramアナライザは、増加する長さのプレフィックストークンを生成します。たとえば、h、次に he のように、単語の先頭から一致させるのに理想的です。カスタム辞書をサポートしています。

ヒント: Edge_ngramは、検索語が単語の先頭に表示される場合にうまく機能します。テキスト内の任意の場所でのあいまい部分文字列一致には、代わりにNgramアナライザを使用してください。
  • 英語テキストの形態素解析結果。

    /*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');

    結果:

    [h, he]

次の例は、デフォルト設定での形態素解析結果を示しています。

構成パラメーター

パラメーター説明デフォルト
FULLTEXT_MIN_GRAM_SIZE最小プレフィックス長。1から8までの整数。1
FULLTEXT_MAX_GRAM_SIZE最大プレフィックス長。1から16までの整数。FULLTEXT_MIN_GRAM_SIZEより大きい必要があります。2

Patternアナライザ

カスタムデリミタに最適です。Patternアナライザは、定義した正規表現パターンで分割することによりテキストを形態素解析します。カスタム辞書やSQLベースの形態素解析テストはサポートしていません。

構文

FULLTEXT INDEX fidx_name(`column_name`) WITH ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT `tbl_dict_name` ];

Custom_rule は、分割パターンを定義する正規表現です。

構成パラメーター

パラメーター説明デフォルト
FULLTEXT_TOKENIZER_CASE_SENSITIVE形態素解析が大文字と小文字を区別するかどうか。false

アナライザ構成の管理

構成パラメーターのクエリ

以下のいずれかの方法を使用して、構成パラメーターの現在の値を確認します。

方法 1: `SHOW adb_config`

デフォルト値と変更された値の両方を返します。

show adb_config key <analyzer_param>;

例:

show adb_config key FULLTEXT_NGRAM_TOKEN_SIZE;

方法 2: `INFORMATION_SCHEMA` から `SELECT`

変更された値のみを返します。パラメーターがデフォルトから変更されたことがない場合、このクエリはnullを返します。

SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = '<analyzer_param>';

例:

SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = 'FULLTEXT_NGRAM_TOKEN_SIZE';

構成パラメーターの変更

set adb_config <analyzer_param>=<value>;

例:

set adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3;