ワイルドカード検索 (WildcardQuery) は、データベースの LIKE 演算子と同様のあいまい検索を実行します。
NOT LIKE 機能を実装するには、ブール検索内で WildcardQuery を mustNotQueries パラメーターと組み合わせて使用する必要があります。詳細については、「ブール検索」をご参照ください。
概要
ワイルドカード検索では、パターンマッチングに特殊文字を使用することで、検索精度と効率が向上します。
WildcardQuery 機能を使用すると、ワイルドカードを含むクエリ文字列でデータを照合できます。この機能では、アスタリスク (*) および疑問符 (?) のワイルドカードがサポートされています。アスタリスク (*) は任意の文字シーケンスを表し、疑問符 (?) は任意の 1 文字を表します。クエリ文字列はアスタリスク (*) または疑問符 (?) で開始できます。たとえば、table*e というクエリは、tablestore に一致します。
WildcardQuery は、Keyword および FuzzyKeyword データ型のフィールドでサポートされています。
-
Keyword:基本的な文字列データ型です。Keywordフィールドに対するワイルドカード検索などのあいまい検索のパフォーマンスは、大規模なデータセットでは低く、データ量が増えるにつれてさらに劣化します。 -
FuzzyKeyword:ワイルドカード検索などのあいまい検索に最適化されたデータ型です。データセットサイズが増加しても、優れた安定したパフォーマンスを維持できます。
Search Index では、さまざまなあいまい一致要件に対応するために、3 種類のワイルドカード検索を提供しています。詳細は、次の表をご参照ください。
本トピックでは、Keyword 型および FuzzyKeyword 型のフィールドに対する WildcardQuery の実行方法について説明します。Text 型のフィールドに対するあいまい検索の実装方法については、「形態素解析に基づくワイルドカード検索」をご参照ください。
|
タイプ |
クエリ方法 |
利点 |
欠点 |
|
Keyword |
WildcardQuery |
Elasticsearch との互換性があります。 |
インデックスされたデータ量が増えるにつれて、クエリパフォーマンスが劣化します。 |
|
FuzzyKeyword |
WildcardQuery |
データサイズが増加しても、大幅に劣化することなく、優れた安定したパフォーマンスを発揮します。 |
一部データが拡張されます。 |
|
Text |
MatchPhraseQuery |
大文字・小文字を区別しない一致をサポートします。 |
一部データが拡張されます。 |
注意事項
WildcardQuery のクエリ語は、Keyword および FuzzyKeyword フィールドのいずれにおいても、32 文字を超えてはなりません。
API
ワイルドカード検索を実行するには、Search または 並列スキャン 操作を呼び出し、クエリタイプを WildcardQuery に設定します。
パラメーター
|
パラメーター |
説明 |
|
fieldName |
クエリ対象のカラム名です。 |
|
value |
ワイルドカードを含む文字列で、32 文字を超えてはなりません。 |
|
query |
クエリタイプです。このパラメーターを |
|
getTotalCount |
一致した行の総数を返すかどうかを指定します。デフォルト値は 一致した行の総数を返すと、クエリパフォーマンスに影響を与える可能性があります。 |
|
weight |
全文検索におけるスコアベースのソートに使用されるクエリの重みで、正の浮動小数点数です。重みが高いほど、クエリ結果内のカラムに高いスコアが割り当てられます。 このパラメーターは返された結果のスコアに影響を与えますが、返される結果の数には影響しません。 |
|
tableName |
データテーブルの名前です。 |
|
indexName |
Search Index の名前です。 |
|
columnsToGet |
返すカラムを指定します。returnAll および columns 設定が含まれます。 デフォルトでは、
|
使用方法
Tablestore コンソール、コマンドラインツール (CLI)、または SDK を使用してワイルドカード検索を実行できます。開始前に、以下の準備を完了してください。
現在、FuzzyKeyword フィールドに対する WildcardQuery は、Tablestore SDK のみでサポートされています。
Table Store 操作に必要な権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを使用します。RAM ユーザーに権限を付与する方法については、「RAM ポリシーを使用した RAM ユーザーへの権限付与」をご参照ください。
SDK またはコマンドラインツールを使用する場合は、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey がまだない場合、AccessKey を作成してください。
データテーブルを作成しました。
データテーブルに対して Search Index が作成済みである必要があります。
SDK を使用する場合は、Tablestore クライアントを初期化してください。
コマンドラインツールを使用する場合は、ツールをダウンロードして起動し、ご利用のインスタンスへの接続を設定して、対象テーブルを選択します。詳細については、「コマンドラインツールのダウンロード」、「ツールの起動と接続情報の設定」、および「データテーブル操作」をご参照ください。
課金
Search Index を使用してデータをクエリすると、読み取りスループットを消費します。詳細については、「Search Index のメータリングと課金」をご参照ください。
よくある質問
関連トピック
Search Index は、完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、範囲クエリ、プレフィックス検索、サフィックス検索、ワイルドカード検索、トークンベースのワイルドカード検索、ブール検索、ジオクエリ、ネストされたクエリ、ベクトル検索、および 存在クエリ など、多次元データクエリに対応するさまざまなクエリタイプをサポートしています。
データをクエリする際には、結果セットをソートおよびページネーションしたり、折りたたみ (重複排除) を実行したりできます。
最大値や最小値の検出、合計の計算、行数のカウントなどのデータ分析には、統計集約 または SQL クエリ 機能を使用できます。
結果セットの順序を問わずデータを迅速にエクスポートするには、並列スキャン 機能を使用できます。