Tablestore SDK for Python を使用して、* と ? を含むパターンを作成し、Keyword または Text 型のフィールドのデータを照合します。
前提条件
Tablestore SDK for Python をインストールし、クライアントを初期化します。
概要
ワイルドカードクエリは、ワイルドカード文字を含むパターンを使用して、インデックス化されたフィールドと照合します。照合動作は、SQL の LIKE に似ています。* 文字は 0 個以上の文字に一致し、? 文字は任意の 1 文字に一致します。Keyword 型のフィールドの場合、パターンはフィールド値全体と照合されます。Text 型のフィールドの場合、パターンは個々のトークンと照合され、パターン自体はトークン化されません。パターンには最大 32 文字を含めることができ、ワイルドカードで始めることもできます。照合では、大文字と小文字が区別されます。SQL の NOT LIKE に似た動作を実装するには、WildcardQuery を BoolQuery.must_not_queries に追加します。search メソッドを呼び出す際に、クエリタイプを WildcardQuery に設定します。フィールドタイプの詳細については、「文字列型」をご参照ください。
WildcardQuery(field_name, value, weight=None)
次の例では、category フィールドが book-* パターンに一致する行をクエリして、最大 10 行のデータと一致する行の総数を返します。
query = WildcardQuery("category", "book-*")
search_query = SearchQuery(
query,
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
print(row)
パラメーター
検索リクエスト
search メソッドには、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
table_name (必須) |
|
データテーブルの名前。 |
|
index_name (必須) |
|
検索インデックスの名前。 |
|
search_query (必須) |
|
クエリ条件と共通のクエリ設定。 |
|
columns_to_get (任意) |
|
返される列の設定。このパラメーターが指定されていない場合、プライマリキー列のみが返されます。 |
|
routing_keys (任意) |
|
カスタムルーティングフィールドのプライマリキー値のリスト。カスタムルーティングが設定されていない場合、このパラメーターを指定する必要はありません。 |
|
timeout_s (任意) |
|
リクエストのタイムアウト (秒単位)。このパラメーターが指定されていない場合、クライアントレベルのタイムアウトが使用されます。 |
クエリ設定
search_query は SearchQuery 型で、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
query (必須) |
|
クエリ条件。このパラメーターを |
|
sort (任意) |
|
クエリ結果のソート順序。詳細については、「結果のソートとページ分割」をご参照ください。 |
|
get_total_count (任意) |
|
一致する行の総数を返すかどうかを指定します。デフォルト値は |
|
next_token (任意) |
|
ページ分割用のトークン。前のレスポンスで返された |
|
offset (任意) |
|
現在のクエリを開始するオフセット。このパラメーターは、シャローページネーションに使用します。 |
|
limit (任意) |
|
返される行の最大数。このパラメーターを |
|
aggs (任意) |
|
集計設定。詳細については、「集計」をご参照ください。 |
|
group_bys (任意) |
|
グルーピング設定。詳細については、「集計」をご参照ください。 |
|
collapse_field (任意) |
|
結果の折りたたみ設定。指定したフィールドに基づいて重複する結果を削除します。詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
highlight (任意) |
|
|
クエリ条件
search_query.query は WildcardQuery 型で、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
field_name (必須) |
|
クエリ対象の |
|
value (必須) |
|
クエリパターン。最大 32 文字まで含めることができます。 |
|
weight (任意) |
|
クエリ条件の関連度の重み。値は正の浮動小数点数を指定します。このパラメーターは、照合や返される行数には影響しません。結果が関連度スコアでソートされる場合にのみ、順序に影響します。デフォルト値は |
返される列
columns_to_get は ColumnsToGet 型で、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
column_names (任意) |
|
返される属性列の名前。このパラメーターは、 |
|
return_type (任意) |
|
返される列のモード。 |
レスポンス
search メソッドは SearchResponse を返します。次の表に、主要なフィールドを説明します。
|
フィールド |
型 |
説明 |
|
rows |
|
現在のクエリによって返された行。行数は |
|
next_token |
|
次ページ用のトークン。このフィールドが空でない場合は、次のリクエストに渡して読み取りを続行します。 |
|
total_count |
|
一致する行数。値は |
|
is_all_succeed |
|
すべてのインデックスパーティションがクエリされたかどうかを示します。値が |
|
agg_results |
|
集計結果。 |
|
group_by_results |
|
グルーピング結果。 |
|
search_hits |
|
検索ヒット。関連度スコア、ハイライト、一致する子行などの拡張情報を含みます。 |
タプル互換のレスポンス
Tablestore SDK for Python 5.2.0 以降、検索 API はタプルの代わりにレスポンスオブジェクトを返します。バージョン 5.1.0 以前では、タプルが直接返されていました。バージョン 5.2.1 以降では、SearchResponse.v1_response() を呼び出して、以前のバージョンと互換性のあるタプルを取得できます。新しいコードでは、レスポンスフィールドが拡張された場合にアンパックエラーが発生するのを防ぐため、SearchResponse の属性に直接アクセスすることをお勧めします。
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()