《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(7) https://developer.aliyun.com/article/1229768
配置项
min_gram 切分字符最小长度,默认是1。
max_gram 切分字符最大长度,默认是2。
Edge n-gram token filter
edge_ngram 根据 N 元语法对单词进行切分,切分方式和 ngram 最大的区别是:切分时根据设置的切分方向(默认单词开头)进行大小为 N 的滑动窗口操作,而 ngram 切分是针对每一个字符进行滑动窗口的操作。默认情况下 edge_ngram 创建最小长度1,最大长度2的字节序列。单词 hello 会被切分为 [h,he],适用于前缀匹配。
GET _analyze { "tokenizer": "standard", "filter": [ { "type": "edge_ngram" } ], "text": [ "hello" ] }
配置项
min_gram 切分字符最小长度,默认是1。
max_gram 切分字符最大长度,默认是2。
side 指定切分方向,分为 front 头部和 back 尾部,默认 front。
GET _analyze { "tokenizer": "standard", "filter": [ { "type": "edge_ngram", "min_gram":3, "max_gram":4, "side":"back" } ], "text": [ "hello" ] } #Response [ llo, ello ]
Pattern_replace token filter
pattern_replace 过滤器将单词中正则表达式匹配到的内容替换为新的值。
GET _analyze { "tokenizer": "standard", "filter": [ { "type": "pattern_replace", "pattern":"'re", "replacement":" Are" } ], "text": [ "Hey! We're Elastic" ] } #Response [ Hey, We Are, Elastic ]
配置项
all 是否所有匹配上的内容进行替换,默认为 true,设置为 false 时仅替换每个单词中第一个匹配上的内容。
pattern 用于匹配字符的正则表达式。
replacement 替换的目标字符串,可以引用正则表达式匹配到组。
Predicate script token filter
predicate_token_filter 过滤器和 condiction 过滤器一样都是通过定义的 painless 脚本对单词进行过滤,不同的是此过滤器会将不满足条件的单词删除。
GET /_analyze { "tokenizer": "standard", "filter": [ { "type": "predicate_token_filter", "script": { "source": """ token.term.length() > 3 """ } } ], "text": "Hey! We are Elasic " } #Response [ Elastic ]
配置项
script 定义 painless 脚本对单词进行过滤,不符合条件的单词将会被删除。
Stemmer token filter
stemmer 过滤器根据一系列的算法规则对不同语种的单词进行词干提取处理,如 searching 处理后会还原为原型 search。通过算法处理单词的词干效率上更高,但对于不规则单词变形在提取上和平时看到的单词拼写会有一些差距。默认使用 porter stemming 算法对英文进行处理。
GET _analyze { "tokenizer": "standard", "filter": [ { "type": "stemmer" } ], "text": [ "What are you doing last night?" ] } #Response [ What, ar, you, do, last, night ]
配置项
language 指定语言算法对单词进行处理,默认使用 _english_。
Stop token filter
stop 过滤器将删除单词中的停用词
GET _analyze { "tokenizer": "standard", "filter": [ { "type": "stop" } ], "text": [ "Hey! We are Elastic " ] } #Response [ Hey, We, Elastic ]
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(9) https://developer.aliyun.com/article/1229765