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 文字 |
再現率 | 高 | 低 | 低 | 中 | 高 |