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

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


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(5) https://developer.aliyun.com/article/1229771



 配置项

 

pattern 匹配分隔符的正则表达式,默认是 \W+ 。

 

flags Java 中正则表达式匹配标记属性,多个标记属性使用 | 竖线分割。

 

GET _analyze
{
  "tokenizer": {
    "type": "pattern",
    "pattern":"(-\\d,)"
  },
  "text": "one-1,two-2,three-3"  #1
}
#Response
[ one, two, three-3 ]

#1 切分文本的分隔符为正则匹配到的连接符、数字和逗号。

 

Char Group Tokenizer

 

char_group 通过指定的字符集当作分隔符对文本内容进行切分,适用于简单切分的场景效率高于使用 pattern 正则匹配的方式。

GET _analyze
{
  "tokenizer": {
    "type": "char_group",
    "tokenize_on_chars": [
      "-"
    ]
  },
  "text": "a6cd-87b8-4356-932d-c4b13"
}
#Response
[ a6cd, 87b8, 4356, 932d, c4b13 ]

配置项

 

tokenize_on_chars 指定切分文本的分隔符列表,支持指定单个字符或以下字符组:

 

l letter 字符

l digit 数字

l whitespace 空格或换行符

l punctuation 标点符号

l symbol 标志符号

 

GET _analyze
{
  "tokenizer": {
    "type": "char_group",
    "tokenize_on_chars": [
      "whitespace",
      "-",
      ":"
    ]
  },
  "text": "Spider-Man: Far From Home "
}
#Response
[ Spider, Man, Far, From, Home ]


Path Tokenizer

 

path_hierarchy 对文件目录切分,根据路径分隔符将每一层目录都切分为一个单词。

GET _analyze
{
  "tokenizer": {
    "type": "path_hierarchy"
  },
  "text": "/home/data/readme.txt"
}
#Response
[ /home, /home/data, /home/data/readme.txt ]

配置项

 

delimiter 目录分隔符,默认 / 。

 

replacement 切分后的目录分隔符,和 delimiter 保持一致。

 

reverse 是否目录倒序从下往上输出,默认为 false。

 

skip 忽略目录数,默认为0,保留全部。


GET _analyze
{
  "tokenizer": {
    "type": "path_hierarchy",
    "delimiter":"/",
    "reverse":false,
    "replacement":"-"
  },
  "text": "one/two/three/read.txt"
}
#Response
[ one, one-two, one-two-three, one-two-three-read.txt ]

Token filter

 

ASCII folding token filter

 

asciifolding 会尝试将文本中的非英文字母,数字和符号转换为基本的 ASCII 字符(前127位),常用欧系和拉丁语言。

 

GET /_analyze
{
  "tokenizer" : "standard",
  "filter" : ["asciifolding"],
  "text" : "açaí à la carte"
}
#Response
[ acai, a, la, carte ]

转换原理可参考:http://svn.apache.org/repos/asf/lucene/java/tags/lucene_solr_4_5_1/lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/ASCIIFoldingFilter.java

 

CJK bigram token filter

 

cjk_bigram 针对中文,日文和韩文字符处理,默认会按照二元语法由相邻两两文字组成为一个词语来处理。内置分词器 cjk 中包含这个过滤器。


GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    "cjk_bigram"
  ],
  "text": "一条测试文本"
}
#Response
[ 一条, 条测, 测试, 试文, 文本 ]

Conditional token filter

 

condition 通过编写 painless 脚本过滤符合条件的文本,只有满足条件的文本执行指定的过滤器。

 

GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "condition",
      "filter": [
        "reverse"                                    #1
      ],
      "script": {
        "source": "token.getTerm().length() < 4"    #2
      }
    }
  ],
  "text": "Hey,Also for search!"
}
#Response
[ yeH, Also, rof, search ]

#1 符合脚本设定条件的单词进行反转。

#2 当单词长度小于4的情况下执行过滤器。

script(必填)定义用于过滤单词的 painless 脚本,满足条件的单词会执行 filter 中定义的过滤器,其它不匹配的单词不进行任何处理。

 

Fingerprint token filter


fingerprint 过滤器会对文本内容生成一个指纹信息做为单词存储。生成过程包括以下三步:

 

1、切分后的单词按照字母排序

2、删除相同的单词

3、通过连接符将单词拼接为一个字符串


GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "fingerprint"
    }
  ],
  "text": "A good cook  could cook cookies?"
}
#Response
[ "A cook cookies could good" ]



《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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
运维 NoSQL 算法
【Redis故障排查】「连接失败问题排查和解决」带你深入分析一下Redis阻塞原因以及问题排查方案指南
【Redis故障排查】「连接失败问题排查和解决」带你深入分析一下Redis阻塞原因以及问题排查方案指南
1630 0
|
关系型数据库 MySQL 数据安全/隐私保护
关于Navicat Premium连接MySQL出现2059错误解决方法
关于Navicat Premium连接MySQL出现2059错误解决方法
|
弹性计算 负载均衡 网络协议
slb健康检查方法
slb健康检查方法
333 4
|
存储 监控 安全
oss安全性保障
阿里云OSS提供多层安全保障,包括数据加密(服务器端SSE-KMS和客户端加密)、访问控制(身份验证、ACL、签名URL和防盗链)、DDoS防护、沙箱机制、合规性认证和日志审计。此外,还支持WORM策略确保数据不可篡改及版本控制以恢复误删数据。通过这些措施,OSS确保用户数据的机密性、完整性和可用性,满足不同业务的安全和合规需求。
726 2
uni-app 62websocket连接权限验证和强制下线
uni-app 62websocket连接权限验证和强制下线
224 3
|
数据采集 XML 数据挖掘
Python中利用正则表达式进行数据清洗的实用指南打造未来数字生活:移动应用开发与系统创新
【7月更文挑战第31天】本文将深入探讨如何运用Python中的正则表达式库re,实现对数据集的有效清洗。文章将通过具体实例展示正则表达式在字符串处理、模式匹配和数据转换中的应用,帮助读者掌握使用正则表达式解决实际问题的能力。
366 0
|
Prometheus 监控 Cloud Native
性能监控神器Prometheus、Grafana、ELK 在springboot中的运用
【6月更文挑战第27天】在 Spring Boot 应用中,监控和日志管理是确保系统稳定性和性能的重要手段。
1646 4
|
安全 算法 Java
spring security 如何对密码进行加密
spring security 如何对密码进行加密
|
消息中间件 存储 资源调度
订单超时处理的几种方案及分析
描述业务常见的订单超时处理的几种方案及分析
33076 19
订单超时处理的几种方案及分析
|
Java Unix Linux
The JVM Tool Interface (JVM TI): How VM Agents Work
The JVM Tool Interface (JVM TI): How VM Agents Work
455 0

热门文章

最新文章