全部產品
Search
文件中心

Tablestore:分詞

更新時間:Nov 09, 2024

為Text類型的欄位設定分詞類型後,系統會根據設定的分詞類型將可分詞的內容分成多個詞。非Text類型的欄位不能設定分詞類型。TEXT類型的欄位不支援排序和統計彙總。如果Text類型的欄位同時需要進行排序或統計彙總,可以通過虛擬列為Keyword類型實現。

背景資訊

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

分詞類型

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

單字分詞(SingleWord)

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

設定分詞類型為單字分詞後,具體的分詞方式如下:

  • 漢語會按照“字”切分。例如“杭州”會切分成“杭”和“州”,通過MatchQuery或MatchPhraseQuery查詢“杭”可以查詢到含有“杭州”內容的資料。

  • 英文字母或數字會按照空格或標點符號切分。

    • caseSensitive為false時,不區分大小寫,Table Store會將分詞後的英文字母全部轉換為小寫字母進行儲存。

      例如“Hang Zhou”會切分成“hang”和“zhou”,通過MatchQuery或MatchPhraseQuery查詢“hang”或“HANG”或“Hang”都能查詢到該行資料。

    • caseSensitive為true時,區分大小寫,Table Store會將分詞後的英文字母區分大小寫進行儲存。

      例如“Hang Zhou”會切分成“Hang”和“Zhou”,通過MatchQuery或MatchPhraseQuery查詢“Hang”或“Zhou”都能查詢到該行資料。

  • 對於數字和英文字母串連在一起的詞,例如商品型號等,也會按照空格或標點符號切分,但是預設情況下數字和英文不會拆分開。例如“iphone6”會拆分成“iphone6”,通過MatchQuery或MatchPhraseQuery查詢時,只有指定完整“iphone6”才能查詢到,使用“iphone”查詢不到。

    如果需要將數字和英文拆分開,您可以設定delimitWord參數為true。此時“iphone6”會拆分成“iphone”和“6”,通過MatchQuery或MatchPhraseQuery查詢“iphone”和“6”都能查詢到該行資料。

單字分詞的參數說明請參見下表。

參數

說明

caseSensitive

是否大小寫敏感。預設值是false,此時所有英文字母會轉換為小寫。

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

delimitWord

對於英文和數字串連在一起的單詞,是否分割英文和數字。預設值是false,表示數字和英文不會拆分開。

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

分隔字元分詞(Split)

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

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

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

分隔字元分詞的參數說明請參見下表。

參數

說明

caseSensitive

是否大小寫敏感。預設是false,此時所有英文字母會轉換為小寫。

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

重要

從Table StoreJava SDK5.17.2版本開始支援此配置。

delimiter

分隔字元,預設是空白字元,可以自訂分隔字元。

  • 建立多元索引時,欄位分詞配置中的分隔字元必須和寫入資料時的分隔字元保持一致,否則可能會查詢不到資料。

  • 當自訂的分隔字元為特殊字元井號(#)、波浪線(~)等時,欄位分詞配置中的分隔字元請使用逸出字元\表示,例如\#

最小數量語義分詞(MinWord)

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

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

最大數量語義分詞(MaxWord)

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

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

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

模糊分詞(Fuzzy)

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

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

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

重要

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

  • 限制

    • 當Text欄位的分詞類型為模糊分詞時,長度不能超過1024字元。如果超過長度限制,系統會將超過的字元截斷丟棄,只保留前1024個字元。

    • 為了防止索引資料量過度膨脹,最大和最小字元切分單元的差值(maxChars-minChars)不能超過15。

  • 參數

    參數

    說明

    minChars

    最小字元切分單元,即切分的字元組合中字元數量必須大於等於此值,預設值為1。

    maxChars

    最大字元切分單元,即切分的字元組合中字元數量必須小於等於此值,預設值為7。

    caseSensitive

    是否大小寫敏感。預設是false,此時所有英文字母會轉換為小寫。

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

    重要

    從Table StoreJava SDK5.17.2版本開始支援此配置。

分詞類型對比

從幾個關鍵維度對不同分詞的比較資訊請參見下表。

對比項

單字分詞

分隔字元分詞

最小數量語義分詞

最大數量語義分詞

模糊分詞

索引膨脹

相關性影響

較強

較強

適用語言

所有

所有

漢語

漢語

所有

長度限制

1024字元

召回率