全部產品
Search
文件中心

Tablestore:短語匹配查詢

更新時間:Jul 28, 2026

使用 Tablestore Java SDK 的短語匹配查詢可按分詞後的詞條順序和位置檢索 Text 類型欄位,並返回滿足短語條件的資料及相關性得分。

前提條件

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

功能說明

短語匹配查詢用於檢索 Text 類型欄位(欄位說明請參見字串類型)中按指定順序和位置連續出現的詞條。欄位值和查詢文本均使用建立多元索引時配置的分詞器進行分詞;未配置分詞器時,預設使用單字分詞。

短語匹配查詢不僅要求查詢詞條全部出現,還要求詞條順序相同且位置相鄰。例如,查詢文本為 this is 時,this is tablestore 可以命中,this table is 和 is this a table 不能命中。匹配查詢只判斷詞條是否匹配,不要求詞條按查詢文本中的順序相鄰出現。

如果 Text 欄位使用模糊分詞器,短語匹配查詢可以實現與萬用字元查詢類似的模糊比對效果,並具有更低的查詢延遲。

以下樣本查詢 description 欄位中按順序連續包含 tablestore 和 durable 詞條的資料,返回最多 10 行資料、匹配總行數和相關性得分。

String tableName = "example_table";
String indexName = "example_index";

MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
    System.out.println(hit.getRow());
    System.out.println(hit.getScore());
}

參數說明

查詢請求

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

名稱

類型

說明

tableName(必選)

String

資料表名稱。

indexName(必選)

String

多元索引名稱。

searchQuery(必選)

SearchQuery

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

columnsToGet(可選)

SearchRequest.ColumnsToGet

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

timeoutInMillisecond(可選)

int

請求級查詢逾時時間,單位為毫秒。預設值為 -1,表示不單獨設定查詢逾時時間。

routingValues(可選)

List<PrimaryKey>

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

查詢配置

request.searchQuery 的類型為 SearchQuery,包含以下參數。

名稱

類型

說明

query(必選)

Query

查詢條件。短語匹配查詢設定為 MatchPhraseQuery。

offset(可選)

Integer

本次查詢的起始位置。

limit(可選)

Integer

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

highlight(可選)

Highlight

Text 欄位的摘要與高亮配置。有關配置方法和限制,請參見摘要與高亮。

collapse(可選)

Collapse

結果摺疊配置,用於按指定列對返回結果去重。有關配置方法,請參見摺疊(去重)。

sort(可選)

Sort

返回結果的排序方式。有關配置方法,請參見排序和翻頁。

trackTotalCount(可選)

int

期望統計的最大匹配行數。預設值為 TRACK_TOTAL_COUNT_DISABLED,表示不統計;設定為 TRACK_TOTAL_COUNT 時統計全部匹配行。值越小,查詢效能越高。

filter(可選)

SearchFilter

對 query 的查詢結果進行過濾。

aggregationList(可選)

List<Aggregation>

統計彙總配置。有關配置方法,請參見統計彙總。

groupByList(可選)

List<GroupBy>

分組配置。有關配置方法,請參見統計彙總。

token(可選)

byte[]

翻頁憑證。將上一次響應的 nextToken 設定為該參數可繼續讀取後續資料。設定 token 時,SDK 會清除 sort,因為翻頁憑證中已包含排序條件。

短語匹配條件

request.searchQuery.query 的類型為 MatchPhraseQuery,包含以下參數。

名稱

類型

說明

fieldName(必選)

String

要查詢的 Text 類型索引欄位名稱。

text(必選)

String

查詢文本。使用欄位的分詞器對查詢文本分詞後,按詞條順序和位置進行匹配。

weight(可選)

float

查詢權重。預設值為 1.0,必須為正浮點數。值越大,該查詢對相關性得分的貢獻越大,不改變匹配範圍。

返回列

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

名稱

類型

說明

columns(可選)

List<String>

要返回的屬性列名稱。僅 returnAll 和 returnAllFromIndex 均為 false 時需要設定;未設定時只返回主鍵列。

returnAll(可選)

boolean

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

returnAllFromIndex(可選)

boolean

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

傳回值

查詢響應

search 方法返回 SearchResponse。核心欄位如下。

名稱

類型

說明

totalCount

long

匹配行數,通過 getTotalCount() 擷取。傳回值取決於 trackTotalCount 配置。

rows

List<Row>

本次查詢返回的行資料,通過 getRows() 擷取。返回數量不超過 limit。

searchHits

List<SearchHit>

查詢命中結果,通過 getSearchHits() 擷取。可從該欄位讀取相關性得分和摘要與高亮結果。

nextToken

byte[]

下一頁憑證,通過 getNextToken() 擷取。值不為 null 時,將其設定到下一次請求的 token 中繼續讀取。

isAllSuccess

boolean

是否已成功查詢全部索引分割區,通過 isAllSuccess() 擷取。值為 false 時,返回的是部分結果,totalCount 可能小於實際匹配行數。

查詢命中

response.searchHits[] 的類型為 SearchHit,包含以下核心欄位。

名稱

類型

說明

row

Row

命中的行資料,通過 getRow() 擷取。

score

Double

相關性得分,通過 getScore() 擷取。使用 ScoreSort 按相關性得分排序時返回實際得分。匹配詞條和 weight 會影響該值。

highlightResultItem

HighlightResultItem

摘要與高亮結果,通過 getHighlightResultItem() 擷取。