為Text類型的欄位設定分詞類型後,系統會將可分詞類型的內容根據設定的分詞類型分成多個詞。非Text類型的欄位不能設定分詞類型。

對於Text類型欄位,常用於匹配查詢(MatchQuery)和短語匹配查詢(MatchPhraseQuery),少部分情境也會用到精確查詢(TermQuery)、多詞精確查詢(TermsQuery)、首碼查詢(PrefixQuery)、萬用字元查詢(WildcardQuery)等。

分詞類型

目前支援單字分詞、分隔字元分詞、最小數量語義分詞、最大數量語義分詞和模糊分詞5種分詞類型。

單字分詞(SingleWord)

單字分詞適用於漢語、英語、日語等所有語言文字。Text類型欄位的預設分詞類型為單字分詞。

設定分詞類型為單字分詞後,具體的分詞方式如下:
  • 漢語會按照“字”切分。例如“杭州”會切分成“杭”和“州”,通過MatchQuery或MatchPhraseQuery查詢“杭”可以查詢到含有“杭州”內容的資料。
  • 英文字母或數字會按照空格或標點符號切分,然後轉換為小寫。例如“Hang Zhou”會切分成“hang”和“zhou”,通過MatchQuery或MatchPhraseQuery查詢“hang”或“HANG”或“Hang”都能查詢到該行資料。
  • 對於數字和英文字母串連在一起的詞,例如商品型號等,也會按照空格或標點符號切分,但是數字和英文不會拆分開。例如“IPhone6”會拆分成“IPhone6”,通過MatchQuery或MatchPhraseQuery查詢時,只能指定完整“iphone6”才能查詢到,使用“iphone”查詢不到。
單字分詞的參數說明請參見下表。
參數 說明
caseSensitive 是否大小寫敏感。預設是false,此時所有英文字母會轉換為小寫。

如果不需要系統自動將英文字母轉換為小寫字母,需要保持大小寫敏感,可以設定caseSensitive為true。

delimitWord 對於英文和數字串連在一起的單詞,是否分割英文和數字。預設是false。

如果需要將數字和英文拆分開,可以設定delimitWord參數為true,此時“iphone6”會被拆分成“iphone”和“6”。

分隔字元分詞(Split)

Tablestore提供了基於通用詞典的分詞,但是有些特殊行業需要一些自訂的辭典做分詞,為瞭解決此問題,Tablestore提供了分隔字元分詞,也叫自訂分詞,使用者先按照自己的方式分詞,再按照特定分隔字元分隔後寫入Tablestore。

分隔字元分詞適用於漢語、英語、日語等所有語言文字。

設定分詞類型為分隔字元分詞後,會按照分隔字元delimiter指定值切分欄位值。例如欄位值為“羽毛球,乒乓球,饒舌”,分隔字元delimeter為英文逗號(,),則會切分為“羽毛球”、“乒乓球”和“饒舌”並建立索引,通過MatchQuery或MatchPhraseQuery查詢“羽毛球”、“乒乓球”、“饒舌”或“羽毛球,乒乓球”均可以查詢到該行資料。

分隔字元分詞的參數說明請參見下表。
參數 說明
delimiter 分隔字元,預設是空白字元,可以自訂分隔字元。
  • 建立多元索引時,欄位分詞配置中的分隔字元必須和寫入資料時的分隔字元保持一致,否則可能會查詢不到資料。
  • 當自訂的分隔字元為特殊字元井號(#)、波浪線(~)等時,欄位分詞配置中的分隔字元請使用逸出字元\表示,例如\#

最小數量語義分詞(MinWord)

最小數量語義分詞適用於漢語,一般應用於全文檢索索引情境。

設定分詞類型為最小數量語義分詞後,系統按照語義對Text欄位內容分詞時,會將Text欄位內容切分成最小數量的語義詞。

最大數量語義分詞(MaxWord)

最大數量語義分詞適用於漢語,一般應用於全文檢索索引情境。

設定分詞類型為最大數量語義分詞後,系統會盡量多的分出語義詞,不同語義詞之間會有重疊,總長度累加後會大於原文長度,索引大小也會膨脹。

此種分詞類型的分詞後結果更多,查詢時命中的機率更大,但是索引大小會有比較大的膨脹。適合使用MatchQuery而非MatchPhraseQuery查詢,如果使用MatchPhraseQuery查詢,由於查詢關鍵詞中也會按照同樣的方式分詞,那麼位置資訊會重疊,就有可能導致搜尋不到。

模糊分詞(Fuzzy)

模糊分詞適用於漢語、英語、日語等所有語言文字,一般應用於常值內容較短情境,例如標題、電影名稱、書名、檔案名稱、目錄名等。

模糊分詞可用於以很低的延遲返回結果,比WildcardQuery效能更好,但是索引大小會有一定膨脹。

設定分詞類型為模糊分詞後,系統對常值內容進行Ngram分詞,結果介於minChars和maxChars之間。例如用在下拉提示等功能中。

模糊分詞會將內容全部轉換為小寫儲存,因此查詢時大小寫不敏感,類似於SQL中的like。

要實現模糊查詢時,您必須在進行模糊分詞的列上使用MatchPhraseQuery,而不能使用其他Query。如果對該列有多種查詢需求,請使用虛擬列功能。關於虛擬列的具體操作,請參見虛擬列

  • 限制
    • 當Text欄位的分詞類型為模糊分詞時,長度不能超過1024字元。如果超過長度限制,系統會將超過的字元截斷丟棄,只保留前1024個字元。
    • 為了防止索引資料量過度膨脹,最大和最小字元切分單元的差值(maxChars-minChars)不能超過6。
  • 參數
    參數 說明
    minChars 最小字元切分單元,即切分的字元組合中字元數量必須大於等於此值,預設值為1。
    maxChars 最大字元切分單元,即切分的字元組合中字元數量必須小於等於此值,預設值為7。

分詞類型對比

從幾個關鍵維度對不同分詞的比較資訊請參見下表。
對比項 單字分詞 分隔字元分詞 最小數量語義分詞 最大數量語義分詞 模糊分詞
索引膨脹
相關性影響 較強 較強
適用語言 所有 所有 漢語 漢語 所有
長度限制 1024字元
召回率