このトピックでは、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 有効な値:
たとえば、男性は男性に変換され、車は車に変換されます。 |
FULLTEXT_TOKENIZER_CASE_SENSITIVE | テキストセグメンテーションが大文字と小文字を区別するかどうかを指定します。 デフォルト値:false 有効な値:
|
セグメンテーション効果
デフォルトの設定では、次のセグメンテーション効果が得られます。
英語テキストのセグメンテーション効果を照会します。
/* + mode=two_phase */ SELECT fulltext_alinlp_test('Hello world');
次の情報が返されます。
[こんにちは、世界]
SELECTステートメントを使用してセグメンテーション効果をクエリする場合、ステートメントの先頭に /* + mode=two_phase */
を追加する必要があります。
IKアナライザー
IKアナライザーは、オープンソースの軽量中国語アナライザーキットです。 このアナライザーでは、カスタムフルテキスト辞書に含まれるエンティティとストップワードを使用できます。
パラメーターの設定
アナライザー設定のクエリおよび変更方法の詳細については、このトピックの「アナライザー設定パラメーターのクエリおよび変更」をご参照ください。
パラメーター | 説明 |
CSTORE_IK_SEGMENTER_USE_SMART_ENABLE | セグメンテーションの粒度。 デフォルト値:false 有効な値:
|
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 有効な値:
|
アナライザー設定パラメーターの照会と変更
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を設定します。