Use Tablestore SDK for Python to perform full-text searches on Text or Keyword fields and return matching data.
Prerequisites
Install the Tablestore SDK for Python and initialize a client.
Description
A match query searches Text or Keyword fields (see String types). For a Text field, the query text is tokenized by the field analyzer, and operator or minimum_should_match determines which tokens must match. For a Keyword field, the query text is not tokenized. A match query does not require tokens to occur consecutively or in query-text order. To match token order and positions, use a Match phrase query.
MatchQuery(
field_name,
text,
minimum_should_match=None,
operator=None,
weight=None,
)
The following example queries rows in which the description field contains both the tablestore and durable tokens.
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)
Parameters
Search request
The search method contains the following parameters.
|
Name |
Type |
Description |
|
table_name (required) |
|
The name of the data table. |
|
index_name (required) |
|
The name of the search index. |
|
search_query (required) |
|
The query condition and common query configurations. |
|
columns_to_get (optional) |
|
The return column configuration. If this parameter is not specified, only primary key columns are returned. |
|
routing_keys (optional) |
|
The primary key values of custom routing fields. This parameter is not required if custom routing is not configured. |
|
timeout_s (optional) |
|
The request timeout in seconds. If this parameter is not specified, the client-level timeout is used. |
Query configuration
search_query is of the SearchQuery type and contains the following parameters.
|
Name |
Type |
Description |
|
query (required) |
|
The query condition. Set this parameter to |
|
sort (optional) |
|
The sort order of results. For more information, see Sort and paginate results. |
|
get_total_count (optional) |
|
Specifies whether to return the total number of matching rows. Default value: |
|
next_token (optional) |
|
The pagination token. Pass |
|
offset (optional) |
|
The offset from which the query starts. Use this parameter for shallow pagination. |
|
limit (optional) |
|
The maximum number of rows to return. If this parameter is set to |
|
aggs (optional) |
|
The metric aggregation configurations. For more information, see Aggregation. |
|
group_bys (optional) |
|
The grouping configurations. For more information, see Aggregation. |
|
collapse_field (optional) |
|
The result collapse configuration. For more information, see Collapse query results. |
|
highlight (optional) |
|
The summary and highlighting configuration for |
Match condition
search_query.query is of the MatchQuery type and contains the following parameters.
|
Name |
Type |
Description |
|
field_name (required) |
|
The name of the |
|
text (required) |
|
The query text. It is tokenized for a |
|
minimum_should_match (optional) |
|
The minimum number of query tokens that must match when |
|
operator (optional) |
|
The token combination mode. |
|
weight (optional) |
|
The query weight, which must be a positive floating-point number. Default value: |
Return columns
columns_to_get is of the ColumnsToGet type and contains the following parameters.
|
Name |
Type |
Description |
|
column_names (optional) |
|
The names of attribute columns to return. Specify this parameter only when |
|
return_type (optional) |
|
The return column mode. |
Response
The search method returns SearchResponse. The following table describes the core fields.
|
Field |
Type |
Description |
|
rows |
|
The rows returned by the query. The number does not exceed |
|
next_token |
|
The token for the next page. An empty value indicates that no more data is available. |
|
total_count |
|
The number of matching rows. The value depends on |
|
is_all_succeed |
|
Indicates whether all index partitions were queried. If the value is |
|
agg_results |
|
The metric aggregation results. This field is empty if |
|
group_by_results |
|
The grouping results. This field is empty if |
|
search_hits |
|
The search hits, including extended information such as rows, relevance scores, and highlights. |
Tuple-compatible response
Starting from Tablestore SDK for Python 5.2.0, search APIs return response objects instead of tuples. Version 5.1.0 and earlier return tuples directly. In version 5.2.1 and later, you can call SearchResponse.v1_response() to obtain a tuple compatible with earlier versions. For new code, access SearchResponse attributes directly to avoid unpacking errors if response fields are extended.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()
Examples
Specify the minimum number of matching tokens
The following example requires at least two tokens from the tokenized query text to match.
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)