全文搜尋引擎對文件進行分析,首先通過Tokenizer得到Token,Token通過Token Filter獲得Term。
Token有稱為標記、詞元,Term稱為詞。ES中Tokenizer大都認為是分詞器。這裡我們主要說Tokenizer,不看Filter,所以本文中的Token我們就稱為是詞。
方法/步驟
1、標準分詞器 Standard Tokenizer
一個標準的分詞器提供基於語法的分詞器,那是一個適合大部分歐洲語言文件的很好的分詞器。分詞器實現Unicode文字分割演算法,該分割演算法在Unicode Standard Annex #29中指定。
2、連詞分詞器 NGram Tokenizer
如果詞的長度大於最短詞長度則分詞,則依次分成最小長度遞進到最大長度的詞。
例如:中華人民共和國 min_gram=2,max_gram=3。結果:中華、中華人、華人、華人民、人民、人民共、民共、民共和、共和、共和國、和國。
3、邊際連詞分詞器 Edge NGram Tokenizer
該分詞器和nGram分詞器很類似,但是分的詞僅僅包含該詞的開始部分。
分詞屬性和NGram Tokenizer的一樣。
例如:中華人民共和國 全國人大 min_gram=2,max_gram=5,"token_chars":["letter","digit"]
結果:中華、中華人、中華人民、中華人民共、全國、全國人、全國人大
注意:單個詞'中華人民共和國'的長度大於5,'和國'不會出現在分詞結果中。
4、關鍵字分詞器 Keyword Tokenizer
keyword分詞器輸出和它接收到的相同的字串。即不分詞,可以設定關鍵字的長度buffer_size預設256。
5、字元分詞器 Letter Tokenizer
字元(letter)型別分詞器將文字按非字元(non-lentter)進行分詞。這就是說,它定義臨近的最大長度的字元為一個詞。注意,這個適合大部分歐洲的語言,但是對一些亞洲的語言來說就很糟糕了,它們的詞不是以空格來分割的。
6、小寫分詞器 Lowercase Tokenizer
lowercase將詞全部轉換成小寫,其他的同letter Tokenizer
7、空格分詞器Whitespace Tokenizer
以空格來分詞
8、模式分詞器/正則分詞器 Pattern Tokenizer
根據正則表示式的匹配規則來分詞。
group set to -1 (the default) is equivalent to "split". Using group >= 0 selects the matching group as the token. For example, if you have:
pattern = '([^']+)' group = 0 input = aaa 'bbb' 'ccc'
the output will be two tokens: 'bbb' and 'ccc' (including the ' marks). With the same input but using group=1, the output would be: bbb and ccc (no ' marks).
9、標準Email URL分詞器 UAX Email URL Tokenizer
和標準分詞器一樣,但是把email和url當作一個詞。
UAX Email URL Tokenizer有人翻譯為'不拆分email、url的分詞器',覺得不太恰當,UAX個人認為是Unicode Standard Annex,見標準分詞器中。
10、路徑層次分詞器 Path Hierarchy Tokenizer
例如:/something/something/else
結果:/something、/something/something、/something/something/else
預設定界符: /
11、典型的編譯器 Classic Tokenizer
classic分詞器提供基於語法的分詞器,這對英語文件是一個很好的分詞器。
12、泰語分詞器 Thai Tokenizer
對泰文進行分詞,如果用在其他語言上同標準分詞器。