全部產品
Search
文件中心

Tablestore:多詞精確查詢

更新時間:Aug 08, 2026

使用 Tablestore Go SDK 的多詞精確查詢匹配指定欄位中與任一查詢值完全一致的資料。

前提條件

安裝Tablestore Go SDK並初始化用戶端。

功能說明

多詞精確查詢在同一欄位上指定多個查詢值。欄位值或分詞詞條只要與任一查詢值完全一致即可匹配,多個查詢值之間是 OR 關係,查詢值本身不會被分詞。

func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)

以下樣本查詢資料並返回最多 10 行資料及匹配總行數。

tableName := "example_table"
indexName := "example_index"

query := &search.TermsQuery{FieldName: "category", Terms: []interface{}{ "books", "music" }}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

參數說明

查詢請求

request 的類型為 tablestore.SearchRequest,包含以下參數。

名稱

類型

說明

TableName(必選)

string

資料表名稱。

IndexName(必選)

string

多元索引名稱。

SearchQuery(必選)

search.SearchQuery

查詢條件和通用查詢配置。

ColumnsToGet(可選)

*tablestore.ColumnsToGet

返回列配置。未設定時只返回主鍵列。

RoutingValues(可選)

[]*tablestore.PrimaryKey

自訂路由欄位對應的主索引值列表。未配置自訂路由時無需設定。

TimeoutMs(可選)

*int32

請求級逾時時間,單位為毫秒。

查詢配置

通過 search.NewSearchQuery() 建立查詢配置,並使用以下方法設定參數。

名稱

類型

說明

SetQuery(必選)

search.Query

設定查詢條件。

SetOffset(可選)

int32

設定本次查詢的起始位置,預設值為 0。使用 Offset 翻頁時,Offset + Limit 不能超過 100000。

SetLimit(可選)

int32

設定本次查詢返回的最大行數,預設值為 10,最大值為 100。設定為 0 時不返回具體行。

SetHighlight(可選)

*search.Highlight

設定 Text 欄位的摘要與高亮。配置方法請參見摘要與高亮

SetCollapse(可選)

*search.Collapse

設定結果摺疊。配置方法請參見摺疊(去重)

SetSort(可選)

*search.Sort

設定返回結果的排序方式。配置方法請參見排序和翻頁

SetGetTotalCount(可選)

bool

是否統計匹配總行數,預設值為 false。

SetToken(可選)

[]byte

設定上一次響應返回的 NextToken,以繼續讀取後續資料。調用該方法會清除 Sort,因為 Token 已包含上一頁的排序條件。使用 Token 翻頁時不能設定 Offset。

SetSearchFilter(可選)

*search.SearchFilter

對查詢結果執行後過濾。配置方法請參見查詢後過濾

Aggregation(可選)

...search.Aggregation

設定統計彙總。配置方法請參見統計彙總

GroupBy(可選)

...search.GroupBy

設定分組。配置方法請參見統計彙總

查詢條件

查詢類型為 search.TermsQuery,包含以下參數。

名稱

類型

說明

FieldName(必選)

string

要查詢的索引欄位名稱。

Terms(必選)

[]interface{}

查詢值列表。查詢值之間是 OR 關係。

返回列

request.ColumnsToGet 的類型為 tablestore.ColumnsToGet,包含以下參數。

名稱

類型

說明

Columns(可選)

[]string

要返回的屬性列名稱。僅 ReturnAll 和 ReturnAllFromIndex 均為 false 時生效。

ReturnAll(可選)

bool

是否返回資料表中的全部屬性列,預設值為 false。

ReturnAllFromIndex(可選)

bool

是否返回已建立索引的全部屬性列,預設值為 false。不能與 ReturnAll 同時設定為 true。

傳回值

Search 方法返回 tablestore.SearchResponse。核心業務欄位如下。

名稱

類型

說明

TotalCount

int64

匹配總行數。傳回值取決於 SetGetTotalCount 配置。

Rows

[]*tablestore.Row

本次查詢返回的行資料,數量不超過 SetLimit 指定的值。

SearchHits

[]*tablestore.SearchHit

查詢命中結果。配置摘要與高亮、嵌套 InnerHits 或需要相關性評分時,從該欄位讀取結果。

NextToken

[]byte

下一頁憑證。值非空時,將其傳入下一次查詢繼續讀取。

IsAllSuccess

bool

是否已成功查詢全部索引分割區。值為 false 時返回的是部分結果,TotalCount 可能小於實際匹配行數。

AggregationResults

search.AggregationResults

統計彙總結果。

GroupByResults

search.GroupByResults

分組結果。