1.standard analyzer 標准分析器
由以下使用分詞器和分詞過濾器組成
PUT my_index { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "my_tokenizer" } }, "tokenizer": { "my_tokenizer": { "type": "standard", "max_token_length": 5 } } } } }
POST _analyze { "analyzer": "standard", "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." }
分詞后的結果;
[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]
自動小寫化分詞,默認不適用停用詞,可配置三個參數
(1)單個詞最大長度(max_token_length 默認255,超過則按照255切分)
(2)停用詞(stopwords 即配置過濾詞如the to等 默認為_none_)
(3)停用詞文件路徑(stopwords_path 默認沒配)
修改配置,需新建一個分析器,如下
PUT my_index { "settings": { "analysis": { "analyzer": { "my_standard_analyzer": { "type": "standard", "max_token_length": 10, "stopwords": "_english_" } } } } }
通過以上配置,在my_index中新增了一個my_standard_analyzer分析器,之后字段定義可直接使用此分析器。
stopwords支持一些國家的語言進行分詞,_english_為標准英文單詞分詞,支持如下,不支持中文。
_arabic_, _armenian_, _basque_, _bengali_, _brazilian_, _bulgarian_, _catalan_, _czech_, _danish_, _dutch_, _english_, _finnish_, _french_, _galician_, _german_, _greek_, _hindi_, _hungarian_, _indonesian_, _irish_, _italian_, _latvian_, _norwegian_, _persian_, _portuguese_, _romanian_, _russian_, _sorani_, _spanish_, _swedish_, _thai_, _turkish_
還可以通過如下配置該分析器具體過濾的詞
"stopwords": ["and", "is", "the"]
使用當前配置分詞結果如下
[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
2.simple analyzer 簡單分析器
由以下使用分詞器組成
Lower Case Tokenizer
只支持自動小寫化詞,不支持配置。
3.whitespace analyzer 空白分析器
由以下使用分詞器組成
Whitespace Tokenizer
區分大小寫分詞,不做小寫化處理,分詞結果如下
[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]
4.stop analyzer 停用分析器
由以下使用分詞器和分詞過濾器組成
Lower Case Tokenizer
Stop Token Filter
默認自動小寫化詞,默認使用_english_ 方式停用詞。
可配置,配置參數stopwords和stopwords_path,與standard 分析器配置方式一致,參考1例子。
5.keyword analyzer 關鍵字分析器
由以下使用分詞器組成
Keyword Tokenizer
無自動小寫化,返回整段詞,無配置,分析結果如下。
[ The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. ]
6.pattern analyzer 模式分析器
由以下使用分詞器和分詞過濾器組成
Pattern Tokenizer
Lower Case Token Filter
Stop Token Filter
自動小寫化,通過正則匹配分割詞,默認是\W+,即匹配所有非數字、字母和下划線的字符,默認分詞結果如下。
[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
可配置參數如下
(1)pattern 匹配分隔符的正則表達式,默認\W+,正則可參考此鏈接Java regular expression
(2)flags 匹配模式,多個用|分隔(CASE_INSENSITIVE|COMMENTS),參考java Pattern類field,入口
(3)lowercase 自動小寫化,默認true
(4)stopwords 停用詞
(5)stopwords_path 停用詞文件路徑
配置例子如下:以所有非字母和數字作為切割符,自動小寫化
{ "settings": { "analysis": { "analyzer": { "my_email_analyzer": { "type": "pattern", "pattern": "\W|_", "lowercase": true } } } } }
7.fingerprint analyzers
由以下使用分詞器和分詞過濾器組成
Standard Tokenizer
Lower Case Token Filter
ASCII Folding Token Filter
Stop Token Filter
Fingerprint Token Filter
返回單一結果,結果自動排序,去除重復詞。
POST _analyze { "analyzer": "fingerprint", "text": "Yes yes, Gödel said this sentence is consistent and." }
配置參數max_output_size,stopwords,stopwords_path與標准分析器一致
separator參數 分詞結果中每個單詞的分隔方式,默認是空格
8.custom analyzer 自定義分析器
通過配置tokenizer、character filters、token filters實現定制的分析器。
PUT my_index { "settings": { "analysis": { "analyzer": { "my_custom_analyzer": { "type": "custom", "tokenizer": "standard", "char_filter": [ "html_strip" ], "filter": [ "lowercase", "asciifolding" ] } } } } } POST my_index/_analyze { "analyzer": "my_custom_analyzer", "text": "Is this <b>déjà vu</b>?" }
分詞結果
[ is, this, deja, vu ]
參考自官方文檔: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/analysis.html
