《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(2) https://developer.aliyun.com/article/1229775
#1 指定 html_strip 对三个文本进行处理,请求返回如下:
"tokens": [ { "token": "google.com", #2 "start_offset": 32, "end_offset": 46, "type": "word", "position": 0 }, { "token": "\nblock-level element\n", #3 "start_offset": 47, "end_offset": 77, "type": "word", "position": 101 }, { "token": "<p>", #4 "start_offset": 78, "end_offset": 87, "type": "word", "position": 202 } ] }
#2 带有 标签的字符串 HTML 已经被剔除掉只保留标签内的文本。
#4 转义字符 > 和 < 替换为 HTML 转义前的大于号和小于号。
escaped_tags 不带尖括号的 HTML 标签数组,数组内的标签将不会剔除。例如设置 ["p"] 则保留
POST _analyze { "char_filter": [ { "type": "html_strip", "escaped_tags": ["p"] } ], "text": [ "<p>block-level element</p>" ] } #Response { "tokens" : [ { "token" : "<p>block-level element</p>", "start_offset" : 0, "end_offset" : 26, "type" : "word", "position" : 0 } ] }
https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements
Mapping character filter
mapping 字符映射过滤器用于设置一个键值对的映射。在文本中遇到键相同的字符时,字符将会替换为键相关联的值。设置键值对有两点需要注意的:
1、键值对中键必须唯一,值可以为空字符串。
2、字符的匹配根据贪婪模式,匹配过程将命中最长的一个。例如映射中提供了 map 和 maple 两个单词,当文本中遇到 maples 时,maple 将会被替换而不是 map,值可以替换为空字符串。
POST _analyze { "char_filter": [ { "type": "mapping", "mappings": [ "- => " #1 ] } ], "text": [ "Spider-Man" ] }
#1 将文本中的连接符 - 替换为空。
{ "tokens" : [ { "token" : "SpiderMan", #2 "start_offset" : 0, "end_offset" : 10, "type" : "word", "position" : 0 } ] }
#2 带有 标签的字符串 HTML 已经被剔除掉只保留标签内的文本。
#4 转义字符 > 和 < 替换为 HTML 转义前的大于号和小于号。
escaped_tags 不带尖括号的 HTML 标签数组,数组内的标签将不会剔除。例如设置 ["p"] 则保留
POST _analyze { "char_filter": [ { "type": "html_strip", "escaped_tags": ["p"] } ], "text": [ "<p>block-level element</p>" ] } #Response { "tokens" : [ { "token" : "<p>block-level element</p>", "start_offset" : 0, "end_offset" : 26, "type" : "word", "position" : 0 } ] }
https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements
Mapping character filter
mapping 字符映射过滤器用于设置一个键值对的映射。在文本中遇到键相同的字符时,字符将会替换为键相关联的值。设置键值对有两点需要注意的:
1、键值对中键必须唯一,值可以为空字符串。
2、字符的匹配根据贪婪模式,匹配过程将命中最长的一个。例如映射中提供了 map 和 maple 两个单词,当文本中遇到 maples 时,maple 将会被替换而不是 map,值可以替换为空字符串。
POST _analyze { "char_filter": [ { "type": "mapping", "mappings": [ "- => " #1 ] } ], "text": [ "Spider-Man" ] }
#1 将文本中的连接符 - 替换为空。
{ "tokens" : [ { "token" : "SpiderMan", #2 "start_offset" : 0, "end_offset" : 10, "type" : "word", "position" : 0 } ] }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(4) https://developer.aliyun.com/article/1229772