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

简介: 带你读《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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
JRE的安装及环境变量配置
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。本文以jre 1.7为例介绍JRE的安装及环境配置,其他版本亦可根据此步骤来安装。
1486 0
|
Web App开发 缓存 Java
idea和谷歌浏览器占用内存过高的处理方法
idea和谷歌浏览器占用内存过高的处理方法
7200 0
idea和谷歌浏览器占用内存过高的处理方法
|
5月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
8月前
|
Java Spring 容器
两种Spring Boot 项目启动自动执行方法的实现方式
在Spring Boot项目启动后执行特定代码的实际应用场景中,可通过实现`ApplicationRunner`或`CommandLineRunner`接口完成初始化操作,如系统常量或配置加载。两者均支持通过`@Order`注解控制执行顺序,值越小优先级越高。区别在于参数接收方式:`CommandLineRunner`使用字符串数组,而`ApplicationRunner`采用`ApplicationArguments`对象。注意,`@Order`仅影响Bean执行顺序,不影响加载顺序。
639 2
|
SQL Java 数据库连接
sql语句能查询出来,mybatis未查询出结果问题解决
sql语句能查询出来,mybatis未查询出结果问题解决
1232 0
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
1556 1
|
Java 开发者 Spring
一个强大的分布式锁框架——Lock4j
【8月更文挑战第15天】在分布式系统日益普及的今天,如何确保数据的一致性和避免并发冲突成为了开发者们面临的重大挑战。Lock4j,作为一个基于Spring AOP的分布式锁组件,以其简单易用、功能强大、扩展性强的特点,成为了解决这些问题的有力工具。今天,我们就来深入探讨一下Lock4j的技术特点和应用实践。
1584 0
|
自然语言处理 Java
ElasticSearch 实现分词全文检索 - match、match_all、multimatch查询
ElasticSearch 实现分词全文检索 - match、match_all、multimatch查询
1295 0
|
开发工具 C++ Windows
error LNK1104: 无法打开文件“MSCOREE.lib”
error LNK1104: 无法打开文件“MSCOREE.lib”
344 0
|
移动开发 前端开发 JavaScript
Java 验证码模块
Java 验证码模块
269 0

热门文章

最新文章