《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
配置项
max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。
UAX URL EMAIL Tokenizer
uax_url_email 将文本中的 URL 或 Email 整体作为一个单词处理,剩余文本和 standard 保持一致。
GET _analyze { "tokenizer": "uax_url_email", "text": "please feel free to contact me at support@elastic.co" } #Response [ please, feel, free, to, contact, me, at, support@elastic.co! ]
配置项
max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。
Classic Tokenizer
classic 基于英文语法的分词方式,会对公司名称、电子邮件、网络域名等文本进行特殊处理。通常使用标点符号和连接符进行拆分。电子邮件,主机域名会整体作为一个单词处理。
GET _analyze { "tokenizer": "classic", "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone" }
#Response [ The, 2, QUICK, Brown, Foxes, jumped, over, the, lazy, dog's, bone ]
配置项
max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。
Thai Tokenizer
thai 专门用于处理泰文的切分方式,使用 thai 切分其他语言文本和 standard 保持一致。
GET _analyze { "tokenizer": "thai", "text": "การที่ได้ต้องแสดงว่างานดี" } #Response [ การ, ที่, ได้, ต้อง, แสดง, ว่า, งาน, ดี ]
N-Gram Tokenizer
ngram 根据 N 元语法对文本进行切分,目的是将文本里面的内容为每一个字节进行大小为 N的滑动窗口操作,形成了长度是 N 的字节片段序列,切分的结果长可用于模糊匹配。如单词 hello 当设置最大和最小长度都为3时,切分的结果是[ hel, ell,llo]。默认最小长度1,最大长度2。
GET _analyze { "tokenizer": { "type": "ngram", "min_gram": 3, "max_gram": 3 }, "text": "hello" } #Response [ hel, ell, llo ]
配置项
min_gram 切分字符最小长度,默认是1。
max_gram 切分字符最大长度,默认是2。
token_chars 设置哪些类型文本可以包含在切分后的字符串,不在范围内的将被丢弃,默认为[]包含所有字符。数组可以存储的选项包括以下六种:
l letter 字符
l digit 数字
l whitespace 空格或换行符
l punctuation 标点符号
l symbol 标志符号
l custom 指定字符,需要在参数 custom_token_chars 指定。
custom_token_chars 设置哪些字符可以包含在切分后的字符串中。
GET _analyze { "tokenizer": { "type": "ngram", "min_gram": 2, "max_gram": 3, "token_chars": [ "digit", #1 "custom" ], "custom_token_chars": "hle" #2 }, "text": "he3$llo" } #Response [ he, he3, e3, ll ]
#1 数字和自定义字符符合切分长度的结果作为 token 存储,其他内容都会被丢弃。
#2 设置字符 h,l,e 三个字符允许出现在 token 中。
Keyword Tokenizer
keyword 会将文本内容当作一个单词整体进行存储,不进行任何切分。
GET _analyze { "tokenizer": { "type": "keyword" }, "text": "We're Elastic" } #Response [ We're Elastic ]
Pattern Tokenizer
pattern 使用正则表达式匹配分隔符(不是文本内容)对文本进行切分,默认使用 \W+ 非数字字母下划线的字符作为分隔符进行切分。
GET _analyze { "tokenizer": { "type": "pattern" }, "text": "support@elastic.co" } #Response [ support, elastic, co ]
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(6) https://developer.aliyun.com/article/1229769