Tablestore SDK for Python を使用して、Text または Keyword フィールドで全文検索を実行し、一致するデータを返します。
前提条件
Tablestore SDK for Python をインストールし、クライアントを初期化します。
概要
match クエリは、Text または Keyword フィールドを検索します (「文字列型」をご参照ください)。Text フィールドの場合、クエリテキストはフィールドのアナライザーによってトークン化され、operator または minimum_should_match が、一致する必要のあるトークンを決定します。Keyword フィールドの場合、クエリテキストはトークン化されません。match クエリでは、トークンが連続していることや、クエリテキストの順序通りであることは要求されません。トークンの順序と位置を一致させるには、match_phrase クエリを使用します。
MatchQuery(
field_name,
text,
minimum_should_match=None,
operator=None,
weight=None,
)
次の例では、description フィールドに tablestore と durable の両方のトークンが含まれる行をクエリします。
query = MatchQuery(
"description",
"tablestore durable",
operator=QueryOperator.AND,
)
response = client.search(
"example_table",
"example_index",
SearchQuery(
query,
sort=Sort([ScoreSort()]),
limit=10,
get_total_count=True,
),
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
for hit in response.search_hits:
print(hit.score, hit.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 は MatchQuery 型で、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
field_name (必須) |
|
クエリ対象の |
|
text (必須) |
|
クエリテキスト。 |
|
minimum_should_match (任意) |
|
|
|
operator (任意) |
|
トークンの結合モードです。 |
|
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()
例
一致するトークンの最小数を指定
次の例では、トークン化されたクエリテキストのうち、少なくとも 2 つのトークンが一致する必要があります。
query = MatchQuery(
"description",
"tablestore durable cloud",
operator=QueryOperator.OR,
minimum_should_match=2,
)
response = client.search(
"example_table",
"example_index",
SearchQuery(query, limit=10),
)
print(response.rows)