フレーズ一致検索は一致検索と似ていますが、フレーズ一致検索ではトークンの位置も評価されます。行がクエリ条件を満たすのは、その行内のトークンの順序および位置がキーワードに含まれるトークンの順序および位置と一致する場合のみです。クエリ対象フィールドのトークン化方式があいまいトークン化の場合、フレーズ一致検索はワイルドカード検索よりも低遅延で実行できます。
利用シーン
フレーズ一致検索を使用して、特定の語順で構成されるフレーズを含むデータを検索できます。また、形態素解析と組み合わせて、ビッグデータ分析、コンテンツ検索、パーソナライズドレコメンデーションなどの特定のシナリオで全文検索を実行できます。たとえば、コンテンツ検索では特定のフレーズを含む文章をクエリでき、チャットレコードでは特定のシーケンスで並んだメッセージを特定できます。
特徴
フレーズ一致検索では近似的な一致を使用してデータをクエリし、トークンの位置を評価します。たとえば、TEXT 型の列の値が「Hangzhou West Lake Scenic Area」である行に対して、「Hangzhou Scenic Area」というキーワードを指定した場合、一致検索ではその行が返されますが、フレーズ一致検索では返されません。「Hangzhou」と「Scenic Area」のキーワード内での距離は 0 ですが、この行の列内では「West」と「Lake」という 2 つの単語が間に存在するため、距離は 2 になります。
フレーズ一致検索を使用する際は、クエリ対象フィールド名とキーワードを指定する必要があります。行がクエリ条件を満たすのは、その行内のトークンの順序および位置がキーワードに含まれるトークンの順序および位置と一致する場合のみです。
フレーズ一致検索を実行する際は、BM25 ベースのキーワード関連性スコアの算出に使用するクエリ対象フィールドへの重み、返却する列、クエリ条件を満たす行の総数を返すかどうか、および返却結果のソート方法を指定できます。
API オペレーション
Search または ParallelScan オペレーションを呼び出し、クエリタイプを MatchPhraseQuery に設定することで、フレーズ一致検索を実行できます。
パラメーター
|
パラメーター |
説明 |
|
fieldName |
一致させるフィールド名です。 TEXT フィールドに対してフレーズ一致検索を実行できます。 |
|
text |
フレーズ一致検索時にフィールド値と一致させるキーワードです。 一致対象フィールドが TEXT フィールドの場合、キーワードは多次元インデックス作成時に指定したアナライザタイプに基づいて複数のトークンに分割されます。多次元インデックス作成時にアナライザタイプを指定しなかった場合は、文字トークン化が実行されます。詳細については、「形態素解析」をご参照ください。 たとえば、「this is」というフレーズを使用してフレーズ一致検索を実行すると、「..., this is tablestore」や「this is a table」が返されますが、「this table is ...」や「is this a table」は返されません。 |
|
query |
クエリのタイプです。query パラメーターを matchPhraseQuery に設定します。 |
|
offset |
現在のクエリを開始する位置です。 |
|
limit |
現在のクエリで返却する最大行数です。 具体的なデータではなく、クエリ条件を満たす行数のみを取得する場合は、limit パラメーターを 0 に設定します。 |
|
getTotalCount |
クエリ条件を満たす行の総数を返すかどうかを指定します。デフォルト値は false で、クエリ条件を満たす行の総数は返されません。 このパラメーターを true に設定すると、クエリパフォーマンスが低下します。 |
|
weight |
BM25 ベースのキーワード関連性スコアを計算する際に、クエリ対象フィールドに割り当てる重みです。このパラメーターは全文検索のシナリオで使用されます。クエリ対象フィールドに高い重みを指定すると、そのフィールドの BM25 ベースのキーワード関連性スコアが高くなります。このパラメーターの値は正の浮動小数点数です。 このパラメーターは返却行数には影響しませんが、クエリ結果の BM25 ベースのキーワード関連性スコアには影響します。 |
|
tableName |
データテーブルの名前です。 |
|
indexName |
検索インデックスの名前です。 |
|
columnsToGet |
クエリ条件を満たす各行のすべての列を返すかどうかを指定します。columnsToGet パラメーターには returnAll フィールドおよび columns フィールドを指定できます。 returnAll フィールドのデフォルト値は false で、すべての列が返されないことを意味します。この場合、columns フィールドを使用して返却する列を指定できます。返却する列を指定しない場合は、プライマリキー列のみが返されます。 returnAll フィールドを true に設定すると、すべての列が返されます。 |
注記
多次元インデックスは基本的な BM25 関連性スコアリングのみを提供し、カスタム関連性モデルには対応していません。
方法
Tablestore コンソール、Tablestore CLI、または Tablestore SDK を使用してフレーズ一致検索を実行できます。
フレーズ一致検索を実行する前に、以下の準備が完了していることを確認してください。
Table Store 操作に必要な権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを使用します。RAM ユーザーに権限を付与する方法については、「RAM ポリシーを使用した RAM ユーザーへの権限付与」をご参照ください。
SDK またはコマンドラインツールを使用する場合は、お使いの Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey がまだない場合、AccessKey を作成してください。
データテーブルを作成済みです。
データテーブルに対して多次元インデックスが作成済みです。
SDK を使用する場合は、Tablestore Client を初期化します。
コマンドラインツールを使用する場合は、ツールをダウンロードして起動し、ご利用のインスタンスへの接続を設定して対象テーブルを選択します。詳細については、「コマンドラインツールのダウンロード」、「ツールの起動と接続情報の設定」、および「データテーブル操作」をご参照ください。
課金
Search Index を使用してデータを照会すると、読み取りスループットを消費します。詳細については、「Search Index のメータリングと課金」をご参照ください。
よくある質問
関連ドキュメント
多次元インデックスは、完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、範囲クエリ、プレフィックス検索、サフィックス検索、ワイルドカード検索、トークンベースワイルドカード検索、ブール検索、ジオクエリ、ネストされたクエリ、ベクトル検索、および 存在検索 など、多次元データクエリ用のさまざまなクエリタイプをサポートしています。
データクエリ時には、結果セットをソートおよびページネーションしたり、重複排除を実行したりできます。
最大値や最小値の検索、合計の計算、行数のカウントなどのデータ分析を行うには、統計集約機能または SQL クエリ機能を使用できます。
結果セットの順序を問わずデータを高速にエクスポートするには、Parallel Scan 機能を使用できます。