带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)

《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
135 0
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
104 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(13)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(13)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)
|
自然语言处理 算法 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(4)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(4)
|
存储 自然语言处理 算法
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
124 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(15)
115 0
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)
|
存储
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(9)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(9)
|
存储 自然语言处理 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
120 0
下一篇
无影云桌面