首碼查詢
首碼查詢(PrefixQuery)用於尋找多元索引中欄位值以指定字串開頭的資料行。
功能概述
PrefixQuery 根據指定的首碼值匹配列中的資料。查詢行為取決於列的資料類型:
-
Keyword:基礎字串類型。隨著資料規模增大,查詢效能會持續下降,僅適合小規模資料集。
-
FuzzyKeyword:專為首碼查詢等模糊查詢最佳化的資料類型。無論資料規模大小,查詢效能均保持穩定。適用於大多數首碼查詢情境。
-
Text:列值在建立索引前會經過分詞處理。當分詞結果中至少有一個詞條滿足首碼條件時,該行被命中。由於分詞存在不確定性,首碼查詢結果不可預測,僅為相容性支援,請謹慎使用。
如何選擇資料類型
下表匯總了各資料類型在首碼查詢情境下的適用性:
|
資料類型 |
首碼查詢效能 |
是否推薦 |
|
Keyword |
隨資料規模下降 |
僅限小規模資料集 |
|
FuzzyKeyword |
資料規模不影響效能 |
推薦,適用於大多數情境 |
|
Text |
分詞導致結果不可預測 |
不推薦 |
首碼匹配樣本
假設某列中儲存以下值:hangzhou、beijing、shanghai、harbin
-
首碼
hang:匹配hangzhou,不匹配beijing、shanghai、harbin -
首碼
ha:同時匹配hangzhou和harbin
介面
首碼查詢的介面為Search或者ParallelScan,具體的 Query 類型為PrefixQuery。
參數
|
參數 |
說明 |
|
query |
查詢類型,設定為 PrefixQuery。 |
|
fieldName |
目標列的名稱。 |
|
prefix |
首碼值,用於與列值進行匹配。 對於 Text 類型列,匹配前會先對列值分詞,分詞結果中至少有一個詞條滿足首碼條件即視為命中。 |
|
getTotalCount |
是否返回匹配的總行數。預設值為 false,即不返回。 設定為 true 會增加查詢延遲。 |
|
weight |
查詢權重,正浮點數。用於全文檢索索引情境中調整該列對 BM25 相關性得分的貢獻,值越大,該列對排名的影響越大。 此參數不影響返回的結果集,隻影響結果中各行的 BM25 得分。 |
|
tableName |
資料表名稱。 |
|
indexName |
多元索引名稱。 |
|
columnsToGet |
指定返回的列,通過 returnAll 和 columns 配置。 returnAll 預設為 false。未設定 columns 時,僅返回主鍵列;設定 columns 後,僅返回指定列。 將 returnAll 設定為 true 時,返回所有列。 |
使用方式
支援通過控制台、命令列工具或SDK執行首碼查詢。執行前,請完成以下準備工作。
基於 FuzzyKeyword 類型的 PrefixQuery 目前僅支援通過Table StoreSDK實現,控制台和命令列工具僅支援 Keyword 類型。
使用阿里雲帳號或者具有Table Store操作許可權的 RAM 使用者進行操作。如果需要為 RAM 使用者授權Table Store操作許可權,請參見通過RAM Policy為RAM使用者授權進行配置。
使用 SDK 方式和命令列工具方式進行操作時,如果當前無可用 AccessKey,則需要為阿里雲帳號或者 RAM 使用者建立 AccessKey。
已建立資料表。
已為資料表建立多元索引。
使用 SDK 方式進行操作時,還需要完成初始化Tablestore Client。
使用命令列工具方式進行操作前,還需要完成下載並啟動命令列工具,然後配置接入執行個體資訊並選擇要操作的表。具體操作,請參見下載命令列工具、啟動並配置接入資訊和資料表操作。
計費說明
使用多元索引查詢資料時會消耗讀輸送量。更多資訊,請參見多元索引計量計費。