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

Tablestore:トークン化

最終更新日:Dec 28, 2024

TEXT フィールドのトークン化方法を指定すると、Tablestore は指定されたトークン化方法に基づいてフィールドの値を複数のトークンにトークン化します。TEXT 以外のフィールドのトークン化方法を指定することはできません。TEXT フィールドでは、並べ替えと集計はサポートされていません。TEXT 型のフィールドで並べ替えまたは集計を実行する場合は、仮想カラム機能を使用し、TEXT フィールドがマッピングされている仮想カラムの型をキーワードに設定できます。

背景情報

ほとんどの場合、一致クエリ (MatchQuery) と一致フレーズクエリ (MatchPhraseQuery) を使用して、TEXT 型のフィールドをクエリできます。また、ビジネス要件に基づいて、用語クエリ (TermQuery)、用語クエリ (TermsQuery)、プレフィックスクエリ (PrefixQuery)、およびワイルドカードクエリ (WildcardQuery) を使用して、TEXT 型のフィールドをクエリすることもできます。

トークン化方法

次のトークン化方法がサポートされています。単一単語トークン化、区切り文字トークン化、最小意味単位ベースのトークン化、最大意味単位ベースのトークン化、およびあいまいトークン化。

単一単語トークン化 (SingleWord)

このトークン化方法は、中国語、英語、日本語などのすべての自然言語に適用されます。デフォルトでは、TEXT フィールドのトークン化方法は単一単語トークン化です。

TEXT フィールドに単一単語トークン化を指定すると、Tablestore は次のルールに基づいてトークン化を実行します。

  • 中国語のテキストは、各漢字に基づいてトークン化されます。たとえば、「杭州」は「杭」と「州」にトークン化されます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用し、「杭」をキーワードとして指定して、「杭州」を含む行をクエリできます。

  • 文字または数字は、スペースまたは句読点に基づいてトークン化されます。

    • caseSensitive パラメーターを false に設定すると、トークンは大文字と小文字を区別しません。Tablestore は、トークンのすべての文字を小文字に変換して保存します。

      たとえば、「Hang Zhou」は「hang」と「zhou」にトークン化されます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用し、「hang」、「HANG」、または「Hang」をキーワードとして指定して、「Hang Zhou」を含む行をクエリできます。

    • caseSensitive パラメーターを true に設定すると、トークンは大文字と小文字を区別します。Tablestore は、大文字と小文字を区別してトークンを保存します。

      たとえば、「Hang Zhou」は「Hang」と「Zhou」にトークン化されます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用し、「Hang」または「Zhou」をキーワードとして指定して、「Hang Zhou」を含む行をクエリできます。

  • モデル番号などの英数字も、スペースまたは句読点でトークン化されます。ただし、これらの文字はデフォルトでは小さな単語にトークン化できません。たとえば、「iphone6」は「iphone6」のみにトークン化できます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用する場合、キーワードとして「iphone6」を指定する必要があります。「iphone」をキーワードとして指定すると、結果は返されません。

    delimitWord パラメーターを true に設定して、文字と数字を区切ることができます。このように、「iphone6」は「iphone」と「6」にトークン化されます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用し、「iphone」または「6」をキーワードとして指定して、「iphone6」を含む行を照合できます。

次の表に、単一単語トークン化のパラメーターを示します。

パラメーター

説明

caseSensitive

大文字と小文字を区別するかどうかを指定します。デフォルト値:false。false の値は、すべての文字が小文字に変換されることを指定します。

Tablestore で文字を小文字に変換したくない場合は、このパラメーターを true に設定します。

delimitWord

英数字をトークン化するかどうかを指定します。デフォルト値:false。false の値は、英数字が小さな単語にトークン化されないことを指定します。

delimitWord パラメーターを true に設定して、文字と数字を区切ることができます。このように、「iphone6」は「iphone」と「6」にトークン化されます。

区切り文字トークン化 (Split)

Tablestore は、一般的な辞書ベースのトークン化を提供します。ただし、特定の業界では、トークン化にカスタム辞書が必要です。この要件を満たすために、Tablestore は区切り文字トークン化を提供します。カスタムメソッドを使用してトークン化を実行し、区切り文字トークン化を使用してから、データを Tablestore に書き込むことができます。

区切り文字トークン化は、中国語、英語、日本語などのすべての自然言語に適用されます。

TEXT フィールドに区切り文字トークン化を指定すると、Tablestore は指定された区切り文字に基づいてフィールド値をトークン化します。たとえば、フィールド値が「badminton,ping pong,rap」で、区切り文字パラメーターをカンマ (,) に設定すると、値は「badminton」、「ping pong」、および「rap」にトークン化され、フィールドはインデックス化されます。一致クエリ (MatchQuery) または一致フレーズクエリ (MatchPhraseQuery) を使用して「badminton」、「ping pong」、「rap」、または「badminton,ping pong」をクエリすると、行を取得できます。

次の表に、区切り文字トークン化のパラメーターを示します。

パラメーター

説明

caseSensitive

大文字と小文字を区別するかどうかを指定します。デフォルト値:false。このパラメーターを false に設定すると、すべての文字が小文字に変換されます。

Tablestore で文字を小文字に変換したくない場合は、このパラメーターを true に設定します。

重要

Tablestore SDK for Java V5.17.2 以降では、このパラメーターがサポートされています。

delimiter

区切り文字。デフォルトでは、値は空白文字です。カスタム区切り文字を指定できます。

  • 検索インデックスを作成する場合、フィールドトークン化に指定した区切り文字は、データテーブルのカラムの値に含まれる区切り文字と同じである必要があります。そうでない場合、データが取得されない可能性があります。

  • カスタム区切り文字がシャープ記号 (#) やチルダ (~) などの特殊文字の場合は、エスケープ文字 (\) を使用して区切り文字を連結します。例:\#

最小意味単位ベースのトークン化 (MinWord)

このトークン化方法は、全文検索シナリオの中国語に適用されます。

TEXT フィールドのトークン化方法として最小意味単位ベースのトークン化を指定すると、Tablestore はクエリを実行するときに TEXT フィールドの値を最小数の意味単位にトークン化します。

最大意味単位ベースのトークン化 (MaxWord)

このトークン化方法は、全文検索シナリオの中国語に適用されます。

TEXT フィールドのトークン化方法として最大意味単位ベースのトークン化を指定すると、Tablestore はクエリを実行するときに TEXT フィールドの値を最大数の意味単位にトークン化します。ただし、異なる意味単位に同じ文字が含まれている場合があります。トークンの全長は元のテキストの長さよりも長くなります。その結果、インデックスのデータ量が増加します。

このトークン化方法は、より多くのトークンを生成し、行が一致する確率を高めることができます。ただし、インデックスサイズが大幅に増加します。最大意味単位ベースのトークン化をトークン化方法として指定する場合は、一致フレーズクエリ (MatchPhraseQuery) を使用できます。一致クエリ (MatchQuery) は、このトークン化方法により適しています。このトークン化方法と一致フレーズクエリを一緒に使用すると、キーワードも最大意味単位ベースのトークン化に基づいてトークン化されるため、トークンの重複によりデータが取得されない可能性があります。

あいまいトークン化

このトークン化方式は、タイトル、映画名、書籍名、ファイル名、ディレクトリ名など、短文コンテンツを含むシナリオにおいて、中国語、英語、日本語など、すべての自然言語に適用されます。

あいまいトークン化と一致フレーズクエリを組み合わせて使用​​すると、低レイテンシでクエリ結果を返すことができます。あいまいトークン化と一致フレーズクエリの組み合わせは、ワイルドカードクエリ (WildcardQuery) よりも優れています。ただし、インデックスサイズが大幅に増加します。

TEXTフィールドのトークン化方法としてファジートークン化を指定すると、Tablestoreはn-gramを使用してトークン化を実行します。トークン内の文字数は、minCharsパラメーターの値からmaxCharsパラメーターの値までの範囲になります。たとえば、このトークン化方法は、ドロップダウンリストへの入力に使用されます。

重要

あいまいクエリを実行するには、あいまいトークン化が使用されているフィールドに対して一致フレーズクエリ (MatchPhraseQuery) を実行する必要があります。フィールドに追加のクエリ要件がある場合は、仮想列機能を使用します。仮想列機能の詳細については、仮想列を参照してください。

  • 制限

    • 長さが 1,024 文字以下の TEXT フィールド値をトークン化するために、ファジートークン化を使用できます。TEXT フィールド値の長さが 1,024 文字を超える場合、Tablestore は超過文字を切り捨てて破棄し、最初の 1,024 文字のみをトークン化します。

    • インデックスデータの過剰な増加を防ぐため、maxChars パラメーターと minChars パラメーターの値の差は 6 を超えてはなりません。

  • パラメーター

    パラメーター

    説明

    minChars

    トークンの最小文字数。デフォルト値: 1。

    maxChars

    トークンの最大文字数。デフォルト値: 7。

    caseSensitive

    大文字と小文字を区別するかどうかを指定します。デフォルト値: false。このパラメーターを false に設定すると、すべての文字が小文字に変換されます。

    Tablestore で文字を小文字に変換したくない場合は、このパラメーターを true に設定します。

    重要

    Tablestore SDK for Java V5.17.2 以降では、このパラメーターがサポートされています。

比較

次の表は、トークン化手法を比較したものです。

項目

単一単語トークン化

区切り文字トークン化

最小意味単位ベースのトークン化

最大意味単位ベースのトークン化

あいまいトークン化

インデックスの増加

関連性

比較的高

比較的高

適用可能な言語

すべて

すべて

中国語

中国語

すべて

長さ制限

なし

なし

なし

なし

1,024 文字

再現率