带你读《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;
相关文章
|
编译器
GEE脚本——GEE中如何查询历史脚本和防丢失记录
GEE脚本——GEE中如何查询历史脚本和防丢失记录
715 4
|
Python
Python系列(7)—— 运算符的优先级
Python系列(7)—— 运算符的优先级
|
11月前
|
定位技术
探秘站点检测访问中代理 IP 的实用技巧
随着互联网发展,使用代理IP的需求增加。站点检测代理IP的方法包括:1. IP地址黑名单;2. HTTP头部检查(如X-Forwarded-For);3. 行为分析;4. 地理位置检测;5. CAPTCHA验证;6. 连接特征分析。这些技术帮助网站判断访问是否来自代理。
403 6
|
关系型数据库 分布式数据库 数据库
基于PolarDB Ganos的实时时空计算:电子围栏篇
文章着重介绍了PolarDB Ganos如何应用于实现实时电子围栏计算。这是一种依赖于位置技术来创建虚拟地理边界的解决方案,广泛应用于交通安全、应急管理、营销推广等多个领域。通过与阿里云实时计算Flink版产品的集成,PolarDB Ganos能够高效地进行空间计算和数据分析,显著提高了地理围栏应用的实时性和准确性。文章还提供了使用Ganos进行电子围栏计算的实际步骤、性能测试及优化建议,并强调了PolarDB Ganos在提高数据处理效率和降低成本方面的优势。
|
人工智能 搜索推荐 数据安全/隐私保护
别错过!2024年苹果iPhone AI革命:揭秘技术突破与未来蓝图
本文首发于公众号“AntDream”。2024年,苹果iPhone在技术创新方面展现了一系列亮点,包括Apple Intelligence集成、Siri的进化、系统范围的写作工具、图像生成能力、跨应用任务处理、隐私保护加强等。iOS 18带来了多项改进,如屏幕图标重新设计、新增卫星短信等功能。后续规划包括Apple Intelligence的推广、与其他AI模型合作、硬件发展、软件生态扩展、全球多语言支持等。苹果将继续优化用户体验和强化隐私保护,探索AI技术在健康监测、增强现实等领域的应用,持续引领智能手机领域的创新潮流。
857 1
|
前端开发
使用Postman导出excel
在本文档中,作者分享了如何使用Postman测试导出Excel接口的两种方法。配以四张图片说明了设置步骤,包括选择接口请求方式、设置Header(Content-Type: multipart/form-data)、Body中选取form-data类型以及指定文件。尽管代码指定了文件名,但在Postman的响应中不会显示,提示需要前端进一步处理。
1676 0
|
机器学习/深度学习 缓存 自然语言处理
采用ChatGPT大模型高效精准文档翻译
这款文档翻译工具支持PDF、Word、PPT、Excel和TXT等多种格式,利用ChatGPT大模型进行高效精准的翻译,覆盖30多种语言。它通过文档解析、预处理、翻译和结果合成步骤工作,并采用缓存、并行处理和负载均衡技术优化性能。该工具满足全球化背景下企业和个人的多语言需求,助力信息交流。
889 0
采用ChatGPT大模型高效精准文档翻译
|
SQL 关系型数据库 数据库
万字带你走过数据库的这激荡的三年
2023 年数据库回顾:向量数据库虽然大火,但没有技术壁垒;2022 年数据库回顾:江山代有新人出,区块链数据库还是那个傻主意;2021 年数据库回顾:性能之争烽烟起,不如低调搞大钱…
618 3
万字带你走过数据库的这激荡的三年
|
敏捷开发 数据可视化 测试技术
场景用例图的作用是什么?
场景用例图的作用是什么?
445 3
|
存储 算法 编译器
【数据结构与算法】使用数组实现栈:原理、步骤与应用
【数据结构与算法】使用数组实现栈:原理、步骤与应用

热门文章

最新文章