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

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


《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 已经被剔除掉只保留标签内的文本。

#3

标签属于块级标签,被 \n 替换。

#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 已经被剔除掉只保留标签内的文本。

#3

标签属于块级标签,被 \n 替换。

#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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
Python
Python系列(7)—— 运算符的优先级
Python系列(7)—— 运算符的优先级
|
4月前
|
Python
Python 值类型和引用类型:你真的懂了吗?
在 Python 中,变量赋值时为何有时影响其他变量?这与值类型和引用类型密切相关。值类型(如 int、str)复制时传递的是实际值,而引用类型(如 list、dict)传递的是内存地址。理解这一区别,有助于避免常见陷阱,如误改共享数据、默认参数陷阱等。本文通过内存图解和实例对比,深入解析赋值行为、函数参数传递机制,并提供避坑技巧,助你彻底掌握这一核心概念。
169 0
|
11月前
|
定位技术
探秘站点检测访问中代理 IP 的实用技巧
随着互联网发展,使用代理IP的需求增加。站点检测代理IP的方法包括:1. IP地址黑名单;2. HTTP头部检查(如X-Forwarded-For);3. 行为分析;4. 地理位置检测;5. CAPTCHA验证;6. 连接特征分析。这些技术帮助网站判断访问是否来自代理。
403 6
|
运维 前端开发 算法
阿里及各大企业中台架构详解(上)
阿里及各大企业中台架构详解
1685 0
阿里及各大企业中台架构详解(上)
|
关系型数据库 分布式数据库 数据库
基于PolarDB Ganos的实时时空计算:电子围栏篇
文章着重介绍了PolarDB Ganos如何应用于实现实时电子围栏计算。这是一种依赖于位置技术来创建虚拟地理边界的解决方案,广泛应用于交通安全、应急管理、营销推广等多个领域。通过与阿里云实时计算Flink版产品的集成,PolarDB Ganos能够高效地进行空间计算和数据分析,显著提高了地理围栏应用的实时性和准确性。文章还提供了使用Ganos进行电子围栏计算的实际步骤、性能测试及优化建议,并强调了PolarDB Ganos在提高数据处理效率和降低成本方面的优势。
|
前端开发
使用Postman导出excel
在本文档中,作者分享了如何使用Postman测试导出Excel接口的两种方法。配以四张图片说明了设置步骤,包括选择接口请求方式、设置Header(Content-Type: multipart/form-data)、Body中选取form-data类型以及指定文件。尽管代码指定了文件名,但在Postman的响应中不会显示,提示需要前端进一步处理。
1676 0
|
Kubernetes 应用服务中间件 nginx
CKAD考试实操指南(四)---优雅设计:掌握Pod设计技巧
在这篇 CKAD 考试实操指南文章中将为你介绍如何使用知十平台并结合开源项目 CKAD Exercises 中提供的练习题来练习 CKAD 考试中 Pod Design 部分的考试内容。在这个过程中你将熟悉如何通过 kubectl 命令行工具去操作「Label」、「Annotation」、「Pod」、「Deployment」、「Job」、「CronJob」,并在实践中加深对知识的理解。
368 0
CKAD考试实操指南(四)---优雅设计:掌握Pod设计技巧
|
存储 SQL NoSQL
GreenPlum数据分布机制
GreenPlum数据分布机制
316 0
|
监控 流计算 C++
公有云小白的大模型实践-ChatGLM on PAI
公有云小白的大模型实践-ChatGLM on PAI
1527 0

热门文章

最新文章