一致クエリを使用して、近似一致に基づいてテーブル内のデータをクエリできます。Tablestoreは、指定したアナライザータイプに基づいて、TEXTフィールドの値と一致クエリを実行するために使用するキーワードをトークン化します。このようにして、Tablestoreはトークンに基づいて一致クエリを実行できます。あいまいクエリで高パフォーマンスを確保するために、あいまいトークン化が使用されるTEXTフィールドには、一致フレーズクエリを使用することをお勧めします。
シナリオ
一致クエリを使用して、特定のフレーズを含むデータを検索できます。一致フレーズクエリをトークン化と組み合わせて使用すると、ビッグデータ分析、コンテンツ検索、ナレッジ管理、ソーシャルメディア分析、ログ分析、インテリジェントQ&Aシステム、コンプライアンスレビューなどの特定のシナリオで全文検索を実行できます。たとえば、eコマースプラットフォームで、タイトル、説明、またはタグに指定されたキーワードが含まれている製品のリストをすばやくクエリしたり、ログ内のエラーメッセージまたは疑わしい操作をすばやく見つけることができます。
機能
一致クエリを使用して、近似一致に基づいてテーブル内のデータをクエリできます。たとえば、行のTEXTタイプのtitle列の値が「杭州西湖風景区」で、単一単語トークン化が使用されているとします。一致クエリのキーワードを「湖風景」に設定すると、その行はクエリ条件を満たします。
一致クエリを使用する場合、クエリするフィールドの名前とキーワードを指定する必要があります。行内の少なくとも1つのトークンがキーワード内のトークンと一致する場合、その行はクエリ条件を満たします。
一致クエリを実行する場合、フィールドの値に含まれる一致するトークンの最小数、BM25ベースのキーワード関連性スコアを計算するためにクエリするフィールドに割り当てる重み、返す列、クエリ条件を満たす行の総数を返すかどうか、および返された行をソートするために使用されるメソッドを指定できます。
API操作
SearchまたはParallelScan操作を呼び出し、クエリタイプをMatchQueryに設定して、一致クエリを実行できます。
パラメータ
パラメータ | 説明 |
fieldName | 一致させるフィールドの名前。 一致クエリはTEXTフィールドに適用されます。 |
text | 一致クエリを実行するときにフィールドの値と一致させるキーワード。 一致させるフィールドがTEXTフィールドの場合、キーワードは、検索インデックスの作成時に指定したアナライザータイプに基づいて複数のトークンにトークン化されます。検索インデックスの作成時にアナライザータイプを指定しない場合は、単一単語トークン化が実行されます。 たとえば、一致させるフィールドがTEXTフィールドで、アナライザータイプを単一単語トークン化に設定し、「this is」を検索キーワードとして使用すると、「...、this is tablestore」、「is this tablestore」、「tablestore is cool」、「this」、および「is」などのクエリ結果を取得できます。 |
query | クエリのタイプ。クエリパラメータをmatchQueryに設定します。 |
offset | 現在のクエリが開始される位置。 |
limit | 現在のクエリで返す行の最大数。 特定のデータなしで、クエリ条件を満たす行の数のみをクエリするには、limitパラメータを0に設定します。 |
minimumShouldMatch | フィールドの値に含まれる一致するトークンの最小数。 fieldNameパラメータで指定されたフィールドの値に、少なくとも最小数の一致するトークンが含まれている場合にのみ、行が返されます。 説明 minimumShouldMatchパラメータは、OR論理演算子と組み合わせて使用する必要があります。 |
operator | 論理演算子。デフォルトでは、ORが論理演算子として使用されます。これは、列値に少なくとも最小数の一致するトークンが含まれている場合、行がクエリ条件を満たすことを指定します。 operatorパラメータをANDに設定すると、列値にすべての一致するトークンが含まれている場合にのみ、行はクエリ条件を満たします。 |
getTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメータのデフォルト値はfalseで、クエリ条件を満たす行の総数は返されないことを指定します。 このパラメータをtrueに設定すると、クエリのパフォーマンスが低下します。 |
weight | BM25ベースのキーワード関連性スコアを計算するためにクエリするフィールドに割り当てる重み。このパラメータは、全文検索シナリオで使用されます。クエリするフィールドにより高い重みを指定すると、そのフィールドのBM25ベースのキーワード関連性スコアが高くなります。このパラメータの値は正の浮動小数点数です。 このパラメータは、返される行の数には影響しません。ただし、このパラメータは、クエリ結果のBM25ベースのキーワード関連性スコアに影響します。 |
tableName | データテーブルの名前。 |
indexName | 検索インデックスの名前。 |
columnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。 columnsToGetパラメータには、returnAllフィールドとcolumnsフィールドを指定できます。 returnAllフィールドのデフォルト値はfalseで、すべての列が返されるわけではないことを指定します。この場合、columnsフィールドを使用して、返す列を指定できます。返す列を指定しない場合は、主キー列のみが返されます。 returnAllフィールドをtrueに設定すると、すべての列が返されます。 |
使用上の注意
検索インデックスを使用して、BM25ベースのキーワード関連性スコアに基づいてクエリ結果をソートできます。カスタム関連性スコアを指定してクエリ結果をソートすることはできません。
方法
Tablestoreコンソール、Tablestore CLI、またはTablestore SDKを使用して、一致クエリを実行できます。一致クエリを実行する前に、次の準備が整っていることを確認してください。
Tablestoreで操作を実行するための権限を持つAlibaba CloudアカウントまたはRAMユーザーを持っていること。 RAMユーザーにTablestore操作権限を付与する方法については、RAMポリシーを使用してRAMユーザーに権限を付与するを参照してください。
Tablestore SDKまたはTablestore CLIを使用してクエリを実行する場合は、Alibaba CloudアカウントまたはRAMユーザーのAccessKeyペアが作成されます。詳細については、AccessKeyペアを作成するを参照してください。
データテーブルが作成されていること。詳細については、テーブルの操作を参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスを作成するを参照してください。
Tablestore SDKを使用してクエリを実行する場合は、OTSClientインスタンスが初期化されていること。詳細については、OTSClientインスタンスを初期化するを参照してください。
Tablestore CLIを使用してクエリを実行する場合は、Tablestore CLIがダウンロードされて起動され、アクセスするインスタンスとデータテーブルに関する情報が構成されていること。詳細については、Tablestore CLIをダウンロードする、Tablestore CLIを起動し、アクセス情報を構成する、およびデータテーブルの操作を参照してください。
請求ルール
検索インデックスを使用してデータをクエリする場合、消費される読み取りスループットに対して課金されます。詳細については、検索インデックスの課金対象項目を参照してください。
FAQ
参考資料
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。用語クエリ、用語クエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、あいまいクエリ、ブールクエリ、地理クエリ、ネストされたクエリ、KNNベクトル検索、および存在クエリ。ビジネス要件に基づいてクエリメソッドを選択し、複数のディメンションからデータをクエリできます。
ソート機能とページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、ソートとページングを実行するを参照してください。
折りたたみ(個別)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に1回だけ表示されます。詳細については、折りたたみ(個別)を参照してください。
データテーブル内のデータを分析する場合は、Search操作の集計機能を使用するか、SQLステートメントを実行できます。たとえば、最小値、最大値、合計、および行の総数を取得できます。詳細については、集計およびSQLクエリを参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan操作とComputeSplits操作を呼び出して、並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。