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

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

最終更新日:Jun 12, 2024

このトピックでは、AnalyticDB for MySQLが提供するアナライザーとその使用法とセグメンテーション効果について説明します。

概要

AnalyticDB for MySQLには、AliNLPアナライザーIKアナライザーStandardアナライザーNgramアナライザーEdge_ngramアナライザーPatternアナライザーなど、フルテキストインデックスを実装するためのさまざまな組み込みアナライザーがあります。 既定のアナライザーまたは別の組み込みアナライザーを使用して、ビジネスシナリオに基づいてテキストを分析できます。 デフォルトのアナライザーは、次のルールに基づいて決定されます。

  • V3.1.4.15より前のバージョンのクラスターの場合、デフォルトでAliNLPアナライザーが使用されます。

  • V3.1.4.15以降のクラスターの場合、デフォルトでIKアナライザーが使用されます。

説明

クラスターのマイナーエンジンバージョンを表示する方法の詳細については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか?

アナライザーの指定

構文

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: カスタム辞書を指定します。 AnalyticDB for MySQLはカスタム辞書をサポートしています。 詳細については、「フルテキストインデックスのカスタム辞書」をご参照ください。

フルテキストインデックスを含むテーブルを作成するときに、アナライザーを指定します。

CREATE TABLE 'tbl_fulltext_demo '(
  'id' int、
  「コンテンツ」varchar、
  'content_alinlp' varchar、
  'content_ik 'varchar、
  'content_standard 'varchar、
  'content_ngram' varchar、
  'content_edge_ngram 'varchar、
  FULLTEXT INDEX fidx_c('content'), // デフォルトのアナライザーを使用します。
  FULLTEXT INDEX fidx_alinlp('content_alinlp') ANALYZER alinlp、
  FULLTEXT INDEX fidx_ik('content_ik') ANALYZER ik、
  FULLTEXT INDEX fidx_standard('content_standard') ANALYZER standard、
  FULLTEXT INDEX fidx_ngram('content_ngram') ANALYZER ngram、
  FULLTEXT INDEX fidx_edge_ngram('content_edge_ngram ') ANALYZER edge_ngram、
  主要なキー ('id')
) ハッシュによる分配 (id); 

AliNLPアナライザー

AliNLPアナライザーは、自然言語処理 (NLP) テクノロジーに基づいてAlibaba CloudとDAMO Academyが提供する自然言語アナライザキットです。 このアナライザーでは、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。 AliNLPアナライザは、連続する自然言語テキストを適切なセグメントに分割することができる。 中国語、英語、インドネシア語、マレー語、タイ語、ベトナム語、フランス語、スペイン語など、さまざまな言語がサポートされています。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

FULLTEXT_SPLIT_GRANULARITY

セグメンテーションの粒度。 値は2から8までの整数でなければなりません。 デフォルト値は2です。

FULLTEXT_FILTER_ST_CONVERT_ENABLED

ステム変換を有効にするかどうかを指定します。 デフォルト値:false 有効な値:

  • true: ステム変換を有効にします。

  • false: ステム変換を無効にします。

たとえば、男性は男性に変換され、車は車に変換されます。

FULLTEXT_TOKENIZER_CASE_SENSITIVE

テキストセグメンテーションが大文字と小文字を区別するかどうかを指定します。 デフォルト値:false 有効な値:

  • true: テキストのセグメンテーションは大文字と小文字を区別します。

  • false: テキストのセグメンテーションは大文字と小文字を区別しません。

セグメンテーション効果

デフォルトの設定では、次のセグメンテーション効果が得られます。

  • 英語テキストのセグメンテーション効果を照会します。

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

    次の情報が返されます。

    [こんにちは、世界]
説明

SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */ を追加する必要があります。

IKアナライザー

IKアナライザーは、オープンソースの軽量中国語アナライザーキットです。 このアナライザーでは、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

CSTORE_IK_SEGMENTER_USE_SMART_ENABLE

セグメンテーションの粒度。 デフォルト値:false 有効な値:

  • true: ik_smartモードでの粗いセグメンテーション

  • false: ik_max_wordモードでのきめの細かいセグメンテーション

CSTORE_IK_SEGMENTER_LETTER_MIN_LENGTH

セグメントの最小長さ。 値は2から16までの整数でなければなりません。 デフォルト値:3。

CSTORE_IK_SEGMENTER_LETTER_MAX_LENGTH

セグメントの最大長。 値は2から256までの整数でなければなりません。 デフォルト値は 128 です。

セグメンテーション効果

デフォルトの設定では、次のセグメンテーション効果が得られます。

  • 英語テキストのセグメンテーション効果を照会します。

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

    次の情報が返されます。

    [こんにちは、世界、または]
説明

SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */ を追加する必要があります。

標準アナライザー

標準アナライザーは、異なる言語に異なるテキストセグメンテーションルールを適用します。 英語テキストの場合、このアナライザーはテキストを小文字に変換し、セグメント化の前にストップワードと句読点を削除します。 中国語テキストの場合、このアナライザーはテキストを個々の文字に直接セグメント化します。 標準アナライザーを使用すると、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

FULLTEXT_MAX_TOKEN_LENGTH

セグメント化できるテキストの最大長。 値は1から1048576までの整数でなければなりません。 デフォルト値は255です。

セグメンテーション効果

デフォルトの設定では、次のセグメンテーション効果が得られます。

  • 英語テキストのセグメンテーション効果を照会します。

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

    次の情報が返されます。

    [こんにちは、世界]
説明

SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */ を追加する必要があります。

Ngramアナライザー

ngramアナライザーは、FULLTEXT_NGRAM_TOKEN_SIZEパラメーターの値に基づいてテキストをセグメント化し、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。 ngramアナライザは、ファジー検索の効率を向上させることができる。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

FULLTEXT_NGRAM_TOKEN_SIZE

セグメントの長さ。 値は1から8までの整数でなければなりません。 デフォルト値は2です。

セグメンテーション効果

デフォルトの設定では、次のセグメンテーション効果が得られます。

  • 英語テキストのセグメンテーション効果を照会します。

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

    次の情報が返されます。

    [彼、エル、ll、lo、o、w、wo、または、rl、ld]
説明

SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */ を追加する必要があります。

Edge_ngramアナライザー

edge_ngramアナライザーは、ngramアナライザーと同じセグメンテーション方法を使用します。 このアナライザーは、プレフィックスベースのセグメンテーションと単語検索のシナリオに最適で、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

FULLTEXT_MIN_GRAM_SIZE

プレフィックスセグメントの最小長。 値は1から8までの整数でなければなりません。 デフォルト値は 1 です。

FULLTEXT_MAX_GRAM_SIZE

プレフィックスセグメントの最大長。 最大長は最小長より大きくなければなりません。 値は1から16までの整数でなければなりません。 デフォルト値は2です。

セグメンテーション効果

デフォルトの設定では、次のセグメンテーション効果が得られます。

  • 英語テキストのセグメンテーション効果を照会します。

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

    次の情報が返されます。

    [h、彼]
説明

SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */ を追加する必要があります。

パターン分析器

パターンアナライザーは、正規表現に基づいてテキストをセグメント化します。 このアナライザーでは、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用したり、SQL文を実行してセグメンテーション効果をクエリすることはできません。

構文

FULLTEXT INDEX fidx_name ('colum_name') ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT 'tbL_dict_name ' ];

パラメーター

Custom_rule: 正規表現。

パラメーターの設定

アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。

パラメーター

説明

FULLTEXT_TOKENIZER_CASE_SENSITIVE

テキストセグメンテーションが大文字と小文字を区別するかどうかを指定します。 デフォルト値:false 有効な値:

  • true: テキストのセグメンテーションは大文字と小文字を区別します。

  • false: テキストのセグメンテーションは大文字と小文字を区別しません。

アナライザー設定パラメーターの照会と変更

AnalyticDB for MySQLでは、アナライザー設定パラメーターを照会および変更できます。

設定パラメーターの照会

  • SHOW adb_configステートメントを実行して、設定パラメーターを照会します。

    構文

    adb_configキー <analyzer_param> を表示します。

    パラメーター

    analyzer_param: 設定パラメーターの名前。

    adb_configキーFULLTEXT_NGRAM_TOKEN_SIZEを表示します。
    説明

    SHOW adb_configステートメントを使用して、既定の設定パラメーターと変更された設定パラメーターの両方を照会できます。

  • SELECTステートメントを実行して、設定パラメーターを照会します。

    構文

    SELECT 'key' 、'value' 、'update_time'
    INFORMATION_SCHEMA.kepler_meta_configsから
    WHERE key = '<analyzer_param>'; 

    パラメーター

    analyzer_param: 設定パラメーターの名前。

    SELECT 'key' 、'value' 、'update_time'
    INFORMATION_SCHEMA.kepler_meta_configsから
    WHEREキー='FULLTEXT_NGRAM_TOKEN_SIZE '; 
    説明

    SELECTステートメントは、変更された構成パラメーターのみを照会するために使用できます。 このステートメントを使用して既定の構成パラメーターを照会する場合、nullが返されます。

設定パラメーターの変更

構文

adb_config <analyzer_param >=< value> を設定します。

パラメーター

  • analyzer_param: 設定パラメーターの名前。

  • value: 設定パラメーターの値。

adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3を設定します。