プレフィックスクエリ (PrefixQuery) は、検索インデックス内でフィールドの値が指定された文字列で始まる行を検出します。
概要
PrefixQuery は、指定されたプレフィックスで始まるカラム値に一致します。クエリの動作はカラムのデータの型によって異なります。
-
Keyword:基本的な文字列データの型です。データ量が増加すると、クエリのパフォーマンスが低下します。この型は小規模データセットでのみ適しています。
-
FuzzyKeyword:プレフィックスクエリなどのあいまい検索向けに最適化されたデータの型です。データ量に関係なく、クエリのパフォーマンスが安定します。ほとんどのプレフィックスクエリのシナリオで推奨されます。
-
Text:カラム値はインデックス作成前に形態素解析されます。少なくとも 1 つのトークンが指定されたプレフィックスで始まる場合、その行は一致とみなされます。形態素解析の不確実性により、クエリ結果が予測不能になる可能性があります。このデータの型は互換性目的でのみサポートされており、注意して使用する必要があります。
データの型の選択方法
以下の表は、各データの型がプレフィックスクエリにどの程度適しているかをまとめたものです。
|
型 |
パフォーマンス |
推奨事項 |
|
Keyword |
データ量の増加に伴い低下 |
小規模データセットのみ |
|
FuzzyKeyword |
データ量に関係なく安定 |
ほとんどのシナリオで推奨 |
|
Text |
形態素解析により結果が予測不能 |
非推奨 |
プレフィックス一致の例
あるカラムに hangzhou、beijing、shanghai、および harbin という値が含まれていると仮定します。
-
プレフィックス
hangはhangzhouに一致しますが、beijing、shanghai、またはharbinには一致しません。 -
プレフィックス
haはhangzhouとharbinの両方に一致します。
API
プレフィックスクエリは、Search API または ParallelScan API を使用して実行できます。クエリの種類は PrefixQuery です。
パラメーター
|
パラメーター |
説明 |
|
query |
クエリの種類です。PrefixQuery に設定します。 |
|
fieldName |
ターゲット列の名前です。 |
|
prefix |
カラム値と照合するプレフィックス文字列です。 Text カラムの場合、カラム値は照合前に形態素解析されます。少なくとも 1 つのトークンが指定されたプレフィックスで始まる場合、その行は一致とみなされます。 |
|
getTotalCount |
一致する行の総数を返すかどうかを指定します。デフォルト値は このパラメーターを |
|
weight |
クエリの重みは正の浮動小数点数である必要があります。全文検索のシナリオでは、このパラメーターは BM25 関連スコアに対するカラムの寄与度を調整します。値を大きくすると、ランキングにおけるカラムの影響力が高まります。 このパラメーターは返される結果セットには影響せず、結果内の各行の BM25 スコアにのみ影響します。 |
|
tableName |
データテーブルの名前です。 |
|
indexName |
検索インデックスの名前です。 |
|
columnsToGet |
一致する各行に対して返すカラムを指定します。 デフォルトでは、 すべてのカラムを返すには、 |
使用方法
Tablestore コンソール、コマンドラインツール、または SDK を使用してプレフィックスクエリを実行できます。開始する前に、以下の前提条件を満たしてください。
FuzzyKeyword カラムに対する PrefixQuery は、現時点で Tablestore SDK のみでサポートされています。コンソールおよびコマンドラインツールは Keyword カラムのみをサポートしています。
Table Store 操作に必要な権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを使用します。RAM ユーザーに権限を付与するには、「RAM ポリシーを使用した RAM ユーザーへの権限付与」をご参照ください。
SDK またはコマンドラインツールを使用する場合は、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey がまだない場合、AccessKey を作成してください。
データテーブルを作成済みです。
データテーブルに対して多次元インデックスが作成済みです。
SDK を使用する場合は、Tablestore Client を初期化します。
コマンドラインツールを使用する場合は、ツールをダウンロードして起動し、ご利用のインスタンスへの接続を設定して対象テーブルを選択します。詳細については、「コマンドラインツールのダウンロード」、「ツールの起動と接続情報の設定」、および「データテーブル操作」をご参照ください。
課金
多次元インデックスを使用してデータをクエリすると、読み取りスループットを消費します。詳細については、「多次元インデックスのメータリングと課金」をご参照ください。
よくある質問
関連ドキュメント
多次元インデックスは、完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、範囲クエリ、プレフィックスクエリ、サフィックスクエリ、ワイルドカード検索、トークンベースのワイルドカード検索、ブール検索、ジオクエリ、ネストされたクエリ、ベクトル検索、および 存在クエリ など、多次元データクエリ向けのさまざまなクエリタイプをサポートしています。
データをクエリする際には、結果セットをソートおよびページネーションしたり、重複排除を実行したりできます。
最大値や最小値の検索、合計の計算、行数のカウントなどのデータ分析を行うには、統計集約機能または SQL クエリ 機能を使用できます。
結果セットの順序にかかわらずデータを高速にエクスポートするには、Parallel Scan 機能を使用できます。