字符串類型
本文介紹字符串相關(guān)的三種類型Keyword、FuzzyKeyword和Text,以及如何在業(yè)務(wù)研發(fā)時選擇合適的字符串類型。
背景信息
字符串是數(shù)據(jù)類系統(tǒng)中最常見的類型,基本在所有業(yè)務(wù)場景中均會使用到。在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中,字符串類型會被細(xì)分為定長、變長等多種不同的類型。
在表格存儲中,字符串類型主要是String類型,類似于C++、Java等開發(fā)語言中的String類型。在多元索引中為了支持更豐富的功能,在功能層面對字符串做了進(jìn)一步細(xì)分,字符串包括類似String的Keyword類型、用于模糊查詢的FuzzyKeyword類型以及可以分詞的用于全文檢索的Text類型。
本文會介紹這三種不同字符串類型的關(guān)系、區(qū)別以及如何在業(yè)務(wù)場景中進(jìn)行字符串類型選擇。
表中和多元索引中類型映射
表中的字符串類型可直接在多元索引中映射為Keyword、FuzzyKeyword或Text類型。您也可以使用虛擬列功能將表中的Integer類型和Double類型在多元索引中映射為Keyword、FuzzyKeyword或Text類型。
表中數(shù)據(jù)類型 | 方式 | 多元索引中數(shù)據(jù)類型 |
String | 直接使用 | Keyword |
FuzzyKeyword | ||
Text | ||
Integer | 虛擬列 | Keyword |
FuzzyKeyword | ||
Text | ||
Double | 虛擬列 | Keyword |
FuzzyKeyword | ||
Text |
類型介紹
Keyword
Keyword類型類似于數(shù)據(jù)庫中的字符串類型,也類似于C++、Java等開發(fā)語言中的String類型,是最常用的字符串類型。
在功能上,主要支持精確查詢、范圍查詢、通配符查詢、前綴查詢、存在性查詢(空值查詢)、排序和 GroupBy等聚合操作。其中,通配符查詢和前綴查詢在中大規(guī)模數(shù)據(jù)集(百萬以上)場景中的性能會隨著數(shù)據(jù)規(guī)模的增長而下降。
在業(yè)務(wù)場景中,如果不需要使用模糊查詢或全文檢索功能,則可以使用Keyword類型。如果需要使用排序、統(tǒng)計聚合等功能,則需要使用Keyword類型。
Text
Text類型類似于搜索引擎中的文本類型,支持多種分詞,即系統(tǒng)會先將字符串類型切分成多個連續(xù)的詞語,然后按照不同的詞語去存儲,主要用于全文檢索場景。
Text類型的分詞包括了多種分詞,有些分詞是簡單的按字或者按字符切分,有些是按照語義去切分,不同分詞方式適用于不同的業(yè)務(wù)場景。更多信息,請參見分詞。
在業(yè)務(wù)場景中,如果需要使用全文檢索功能,則需要使用Text類型。
FuzzyKeyword
FuzzyKeyword類型也是一種字符串類型,主要特點是支持高性能的通配符查詢、前綴查詢和后綴查詢,在任意規(guī)模數(shù)據(jù)上均能保持比較好的查詢性能,查詢性能不會隨著規(guī)模增大而下降。
在業(yè)務(wù)場景中,如果需要使用高性能(毫秒級)的通配符查詢、前綴查詢或后綴查詢,則需要使用FuzzyKeyword類型。
如果需要使用后綴查詢,則可以直接使用FuzzyKeyword類型的SuffixQuery,或者將數(shù)據(jù)翻轉(zhuǎn)后使用性能較弱的Keyword類型的PrefixQuery。
如果在業(yè)務(wù)場景中某一個字段需要用到多種查詢功能,例如既需要精確查詢,又需要高性能模糊查詢和全文檢索,則可以使用虛擬列功能,將表中的一列在多元索引中映射為三列,這三列可以分別使用Keyword、Text和FuzzyKeyword類型。更多信息,請參見虛擬列。
類型區(qū)別
三種字符串類型可用于的查詢功能和最大長度有差異,具體說明請參見下表。
“??”表示支持,“×”表示不支持。
功能 | Keyword | FuzzyKeword | Text |
?? | × | × | |
?? | × | × | |
?? | × | × | |
?? | × | × | |
?? | × | × | |
?? | × | × | |
× | × | ?? | |
全文檢索:相關(guān)性分?jǐn)?shù) | × | × | ?? |
全文檢索:高亮和摘要 | × | × | ?? |
× | × | ?? | |
× | × | ?? | |
??(性能差) | ??(性能優(yōu)) | × | |
??(性能差) | ??(性能優(yōu)) | × | |
后綴查詢 | × | ?? | × |
最大長度 | 4 KB | 2 KB | 1 KB |