带你读《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 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(3) https://developer.aliyun.com/article/1229774



配置项

 

mappings 提供用于匹配字符映射键值对数组,每个元素格式为 key => value。 和 mappings_path 二选一。

 

mappings_path 指定键值对文件的保存路径。当键值对数量巨大时,Elasticsearch 支持把键值对保存为文件,通过指定文件路径加载。和 mappings 二选一。

 

1、文件需要保存在 Elasticsearch 安装目录中的 config 文件夹下,文件访问权限设置为

Elasticsearch 的运行用户 。

2、必须是UTF-8格式。

3、每组键值对单独一行保存。

 

创建 mapping.txt 存放映射字符,文件保存在 Elasitcsearch 安装目录中的 config 文件夹下。

 

mappings.txt 将 - 和 _ 映射为空字符串
- => 
_ =>
JSON
POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",
      "mappings_path":"mappings.txt" 
    }
  ],
  "text": ["Spider-Man"]
}
#Response
{
  "tokens" : [
    {
      "token" : "SpiderMan",
      "start_offset" : 0,
      "end_offset" : 10,
      "type" : "word",
      "position" : 0
    }
  ]
}

Pattern replace character filter

 

pattern_replace 过滤器通过正则表达式把匹配到的字符进行替换,替换的字符中可以引用匹配的正则组。

 

POST _analyze
{
  "char_filter": [
    {
      "type": "pattern_replace",
      "pattern": "[^0-9]",            #1
      "replacement": ""                #2
    }
  ],
  "text": [
    "+86010 5842 3584",
    "010-56812546"
  ]
}

#1 匹配文本中的非数字。

#2 匹配到的内容使用空字符串替换,表示删除匹配到的内容。


#Response
{
  "tokens" : [
    {
      "token" : "8601058423584",
      "start_offset" : 1,
      "end_offset" : 16,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "01056812546",
      "start_offset" : 17,
      "end_offset" : 29,
          "type" : "word",
      "position" : 101
    }
  ]
}

配置项

 

pattern 用于匹配字符的正则表达式。

 

replacement 替换的目标字符串,可以引用正则表达式匹配到组。

 

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

 

正则表达式相关设置参考:

 

正则表达式组:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#appendReplacement-java.lang.StringBuffer-java.lang.String-

标记属性值:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#field.summary

 

Tokenizer

 

Standard Tokenizer

 

standard 是 Elasticsearch 中默认切分方式,基于 Unicode Text Segmentation 算法实现。在英文中主要根据非数字和字母符号进行切分,适用于大多数语言。

 

GET _analyze
{
  "tokenizer": "standard",
  "text": "Hey!How are you?"
}
#Response
[ Hey, How, are, you ]

配置项

 

max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。


GET _analyze
{
  "tokenizer": {
    "type": "standard",
    "max_token_length": 5
  },
  "text": "The sun is shining"
}
#Response
[ The, sun, is, shini, ng ]

Letter Tokenizer

 

letter 会把不是字母的字符当作分隔符对文本进行切分,此方式不包含配置项。


GET _analyze
{
  "tokenizer": "letter",
  "text": "support@elastic.co"
}
#Response
[ support, elastic, co ]

Lowercase Tokenizer

 

lowercase 和 letter 切分方式相同,把不是字母的字符当作分隔符对文本进行切分。同时会把切分后的单词转换小写。

GET _analyze
{
  "tokenizer": "letter",
  "text": "Support@Elastic.CO"
}
#Response
[ support, elastic, co ]

Whitespace Tokenizer

whitespace 使用文本中的空格进行切分。


GET _analyze
{
  "tokenizer": "whitespace",
  "text": "Heya You know,For search!"
}
#Response
[ Heya, You, know,For, sesarch! ]



《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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
存储 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中返回函数计算2.0控制台如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
179 1
|
开发框架 JavaScript 前端开发
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
本文介绍了 Electron 33.0.0 版本的重要更新,包括核心组件的升级(Chromium、Node.js 和 V8),新增功能(如 app.setClientCertRequestPasswordHandler 和 View.setBorderRadius),重要改进和主要问题修复。建议开发者尽快升级,以享受更强大的性能和功能。
718 0
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
|
JavaScript
(JS)身份证号码脱敏
(JS)身份证号码脱敏
240 0
|
机器学习/深度学习 网络协议 算法
计算机网络 | socket IPC(本地套接字domain)
计算机网络 | socket IPC(本地套接字domain)
191 0
|
计算机视觉
Echarts饼图,自定义饼图图例的排列方式, formatter使用语法
Echarts饼图,自定义饼图图例的排列方式, formatter使用语法
|
搜索推荐
常用排序算法复杂度和稳定性总结
排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定 选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 插入排序 O(n2) O(n) O(n2) O(1) 稳定 希尔排序 O(nlogn)...
2748 0
|
小程序 文件存储
【易售小程序项目】顶部导航栏和底部导航栏设置+iconfont图标引入
【易售小程序项目】顶部导航栏和底部导航栏设置+iconfont图标引入
503 0
|
开发框架 运维 安全
浅谈组装式应用
在数字化转型的浪潮中,企业数字化转型在实施过程中所面临的问题和挑战非常的明显,包括 - 交付成本高、质量低、客户满意度低 - 代码难以复用 、无法形成有效沉淀 - 无法形成行业竞争力 、不可持续等等 在这种情况下,如何降低交付成本,提升交付效率,提高客户满意度,并且实现可持续的能力沉淀,成为数字化转型实施者的当务之急。
6908 14
浅谈组装式应用
|
存储 数据可视化 大数据
大数据:挖掘无尽的信息金矿
大数据已经成为数字时代的重要驱动力,它不仅改变了我们的商业模式、科学研究和社会运作方式,还为创新和发展带来了无限的机遇。通过分析和利用大数据,我们能够更好地了解世界的运行规律,做出更明智的决策,推动社会的进步。

热门文章

最新文章