すべてのプロダクト
Search
ドキュメントセンター

Tablestore:match クエリ

最終更新日:Aug 07, 2026

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 フィールドに tablestoredurable の両方のトークンが含まれる行をクエリします。

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 (必須)

str

データテーブルの名前。

index_name (必須)

str

検索インデックスの名前。

search_query (必須)

SearchQuery

クエリ条件と共通のクエリ設定。

columns_to_get (任意)

ColumnsToGet

返す列の設定。このパラメーターを指定しない場合、プライマリキー列のみが返されます。

routing_keys (任意)

list

カスタムルーティングフィールドのプライマリキー値。カスタムルーティングが設定されていない場合、このパラメーターは不要です。

timeout_s (任意)

int

リクエストのタイムアウト (秒単位)。このパラメーターを指定しない場合、クライアントレベルのタイムアウトが使用されます。

クエリ設定

search_querySearchQuery 型で、次のパラメーターが含まれます。

名前

説明

query (必須)

Query

クエリ条件。このパラメーターを MatchQuery に設定します。

sort (任意)

Sort

結果のソート順。詳細については、「結果のソートとページネーション」をご参照ください。

get_total_count (任意)

bool

一致する行の総数を返すかどうかを指定します。デフォルト値: False。このパラメーターを True に設定すると、クエリのオーバーヘッドが増加します。

next_token (任意)

bytes

ページネーショントークン。前のレスポンスの next_token を渡して、次のページを取得します。

offset (任意)

int

クエリを開始するオフセット。浅いページネーションにこのパラメーターを使用します。

limit (任意)

int

返す行の最大数。このパラメーターを 0 に設定すると、行は返されません。

aggs (任意)

list[Agg]

メトリック集約の設定。詳細については、「集約」をご参照ください。

group_bys (任意)

list[BaseGroupBy]

グループ化の設定。詳細については、「集約」をご参照ください。

collapse_field (任意)

Collapse

結果の折りたたみ設定。詳細については、「クエリ結果の折りたたみ」をご参照ください。

highlight (任意)

Highlight

Text フィールドのサマリーとハイライトの設定。詳細については、「サマリーとハイライト」をご参照ください。

一致条件

search_query.queryMatchQuery 型で、次のパラメーターが含まれます。

名前

説明

field_name (必須)

str

クエリ対象の Text または Keyword フィールド名。

text (必須)

str

クエリテキスト。Text フィールドの場合はトークン化されますが、Keyword フィールドの場合はトークン化されません。

minimum_should_match (任意)

int

operatorOR の場合に一致する必要があるクエリートークンの最小数。

operator (任意)

QueryOperator

トークンの結合モードです。OR (デフォルト) は任意のトークンに一致し、AND はすべてのトークンに一致する必要があります。

weight (任意)

float

クエリの重み。正の浮動小数点数である必要があります。デフォルト値: 1.0。関連度スコアには影響しますが、マッチングには影響しません。

返される列

columns_to_getColumnsToGet 型で、次のパラメーターが含まれます。

名前

説明

column_names (任意)

list[str]

返す属性列の名前です。return_typeSPECIFIED の場合にのみ、このパラメーターを指定します。

return_type (任意)

ColumnReturnType

返される列のモードです。NONE (デフォルト) はプライマリキー列のみを返し、SPECIFIED は指定された属性列を返し、ALL はテーブル内のすべての属性列を返し、ALL_FROM_INDEX はインデックス内のすべての格納済みフィールドを返します。

レスポンス

search メソッドは SearchResponse を返します。次の表に、主要なフィールドを示します。

フィールド

説明

rows

list[Row]

クエリによって返される行。行数は limit を超えません。

next_token

bytes

次のページのトークン。空の値は、利用可能なデータがこれ以上ないことを示します。

total_count

int

一致する行数です。この値は get_total_count によって異なります。

is_all_succeed

bool

すべてのインデックスパーティションがクエリされたかどうかを示します。値が False の場合、部分的な結果が返されます。

agg_results

list[AggResult]

メトリック集計結果。 aggs が設定されていない場合、このフィールドは空になります。

group_by_results

list[GroupByResult]

グルーピング結果。このフィールドは、group_bys が設定されていない場合は空になります。

search_hits

list[SearchHit]

行、関連性スコア、ハイライトなどの拡張情報を含む検索ヒット。

タプル互換のレスポンス

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)