多元索引支援三種字串類型:Keyword、FuzzyKeyword 和 Text。根據查詢需求選擇合適的類型。
背景資訊
Table Store資料表中的字串使用 String 類型儲存,相當於 C++、Java 等語言中的 String 類型。多元索引在此基礎上進一步細分,以支援不同的查詢模式:
|
類型 |
適用情境 |
|
Keyword |
精確查詢、範圍查詢、排序和統計彙總 |
|
FuzzyKeyword |
任意資料規模下的高效能萬用字元查詢、首碼查詢和尾碼查詢 |
|
Text |
支援分詞化的全文檢索查詢,以及相關性評分 |
表中和多元索引中類型映射
資料表中的 String 類型可直接在多元索引中映射為 Keyword、FuzzyKeyword 或 Text 類型。通過虛擬列功能,您還可以將資料表中的 Integer 或 Double 類型映射為這三種字串類型。
|
表中資料類型 |
方式 |
多元索引中資料類型 |
|
String |
直接使用 |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Integer |
虛擬列 |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Double |
虛擬列 |
Keyword |
|
FuzzyKeyword |
||
|
Text |
類型介紹
Keyword
Keyword 將字串視為不可分割的整體儲存,類似關係型資料庫中的字串類型,是最常用的字串類型。支援精確查詢、多詞精確查詢、範圍查詢、萬用字元查詢、首碼查詢、存在性查詢(空值查詢),以及排序和統計彙總(含 GroupBy)。
典型應用情境:使用者識別碼、狀態代碼、郵件地址、國家代碼等需要精確匹配或彙總分析的欄位。
在百萬級以上資料集中,萬用字元查詢和首碼查詢的效能會隨資料規模增大而下降。如需在大規模資料上執行高效能模糊查詢,使用 FuzzyKeyword 類型。
Text
Text 專為全文檢索查詢設計。寫入時,系統按配置的分詞方式將字串拆分為詞語後分別建索引;查詢時,查詢詞同樣先分詞再匹配。
正因為 Text 對詞語而非原始值建索引,它支援相關性評分、摘要高亮、匹配查詢和短語匹配查詢,但不支援精確查詢、排序和統計彙總。
典型應用情境:商品描述、文章本文、使用者評論等需要按詞語搜尋的長文字欄位。
分詞方式的更多資訊,請參見分詞。
FuzzyKeyword
FuzzyKeyword 專為高效能模糊查詢設計。寫入時,系統將每個欄位值的子串預先儲存在索引中,查詢時直接掃描緊湊的索引結構而非逐行遍曆未經處理資料。因此,萬用字元查詢、首碼查詢和尾碼查詢的效能不會隨資料規模增大而下降。
典型應用情境:日誌訊息、檔案路徑、商品 SKU 等使用者通過部分字串進行搜尋的欄位。
尾碼查詢直接使用 FuzzyKeyword 類型的 SuffixQuery。也可以將資料翻轉後對 Keyword 類型使用 PrefixQuery,但效能較弱。
FuzzyKeyword 類型的欄位不支援排序和統計彙總。如需同時排序或彙總,通過虛擬列將該欄位額外映射為 Keyword 類型。
如果一個欄位需要同時使用多種查詢功能(例如精確查詢、高效能模糊查詢和全文檢索查詢),通過虛擬列將資料表的一列在多元索引中分別映射為 Keyword、Text 和 FuzzyKeyword 類型。更多資訊,請參見虛擬列。
類型區別
三種字串類型在支援的查詢功能和最大長度上有所差異,詳見下表。
"✓"表示支援,"×"表示不支援。
|
功能 |
Keyword |
FuzzyKeyword |
Text |
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
✓ |
✓ |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
× |
× |
✓ |
|
|
全文檢索查詢:相關性評分 |
× |
× |
✓ |
|
全文檢索查詢:摘要高亮 |
× |
× |
✓ |
|
× |
× |
✓ |
|
|
× |
× |
✓ |
|
|
✓(大規模時效能較差) |
✓(效能優) |
× |
|
|
✓(大規模時效能較差) |
✓(效能優) |
× |
|
|
尾碼查詢 |
× |
✓ |
× |
|
最大長度 |
4 KB |
2 KB |
2 MB |