【Elasticsearch】标准化器(Normalizers)

Elasticsearch 的标准化器(Normalizers)是一种特殊的分析器,用于对`keyword`类型字段的文本进行统一的格式化处理。与普通分析器不同,标准化器只能产生单个标记(token),因此它不包含分词器(tokenizer),并且只能使用基于单个字符的过滤器。

标准化器的主要特点

1. 单标记输出:标准化器只能输出一个标记,因此它适用于对整个字段进行统一处理,而不是将字段拆分为多个标记。

2. 字符过滤器和标记过滤器:标准化器可以使用字符过滤器(`char_filter`)和标记过滤器(`filter`),但只能使用基于单个字符的过滤器,例如`lowercase`(小写化)、`asciifolding`(将非 ASCII 字符转换为 ASCII 字符)。

3. 应用场景:标准化器通常用于需要在索引和查询时对字段进行统一格式化的场景,例如去除特殊字符、统一大小写等。

内置标准化器

Elasticsearch 自带了一个名为`lowercase`的内置标准化器,它会将所有字符转换为小写。

自定义标准化器

可以通过在索引的分析设置中定义自定义标准化器。以下是一个自定义标准化器的示例配置:

```json

PUT index

{

  "settings": {

    "analysis": {

      "normalizer": {

        "my_normalizer": {

          "type": "custom",

          "char_filter": [],

          "filter": ["lowercase", "asciifolding"]

        }

      }

    }

  },

  "mappings": {

    "properties": {

      "foo": {

        "type": "keyword",

        "normalizer": "my_normalizer"

      }

    }

  }

}

```

在这个例子中:

• 定义了一个名为`my_normalizer`的自定义标准化器,它使用了`lowercase`和`asciifolding`过滤器。

• 将字段`foo`的类型设置为`keyword`,并指定使用`my_normalizer`进行标准化。

标准化器的应用场景

1. 统一大小写:在搜索时,用户可能输入大写或小写的文本,使用`lowercase`过滤器可以确保索引和查询时的文本大小写一致。

2. 去除特殊字符:通过`asciifolding`过滤器,可以将非 ASCII 字符转换为 ASCII 字符,例如将`é`转换为`e`。

3. 文本格式化:在某些场景下,需要对字段进行统一的格式化处理,例如去除多余的空格或特殊符号。

示例

假设我们有一个字段`foo`,需要在索引和查询时将其内容统一转换为小写并去除特殊字符。我们可以定义一个自定义标准化器`my_normalizer`,并将其应用于`foo`字段。

```json

PUT index

{

  "settings": {

    "analysis": {

      "normalizer": {

        "my_normalizer": {

          "type": "custom",

          "char_filter": [],

          "filter": ["lowercase", "asciifolding"]

        }

      }

    }

  },

  "mappings": {

    "properties": {

      "foo": {

        "type": "keyword",

        "normalizer": "my_normalizer"

      }

    }

  }

}

```

在索引文档时:

```json

PUT index/_doc/1

{

  "foo": "BÀR"

}

```

在查询时:

```json

GET index/_search

{

  "query": {

    "term": {

      "foo": "BAR"

    }

  }

}

```

由于`foo`字段使用了`my_normalizer`,在索引和查询时都会将文本转换为小写并去除特殊字符,因此查询`"BAR"`时可以匹配到索引的`"BÀR"`。

通过合理使用标准化器,可以有效提高搜索的准确性和灵活性,同时减少因文本格式差异导致的搜索问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969360.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

本次要学视频检测,我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来,保留红框的部分。 ​ 然后我们来看一下源代码: import cv2 as cvdef face_detect_demo(…

5g基站测试要求和关键点

5G基站的测试要求涉及多个方面,以确保其性能、覆盖能力、稳定性和合规性。以下是5G基站测试的主要要求和关键点: 一、基础性能测试 射频(RF)性能测试 发射机性能:验证基站的发射功率、频率误差、调制质量(E…

【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ 相关笔记: https://blog.csdn.net/dj…

20250213 隨筆 雪花算法

雪花算法(Snowflake Algorithm) 雪花算法(Snowflake) 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法,它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID,且不依賴資料庫,具…

22.4、Web应用漏洞分析与防护

目录 Web应用安全概述DWASP Top 10Web应用漏洞防护 - 跨站脚本攻击XSSWeb应用漏洞防护 - SQL注入Web应用漏洞防护 - 文件上传漏洞Web应用漏洞防护 - 跨站脚本攻击XSS Web应用安全概述 技术安全漏洞,主要是因为技术处理不当而产生的安全隐患,比如SQL注入…

【Vue3 入门到实战】15. 组件间通信

目录 1. Props 2. 自定义事件 3. mitt 4. v-model 4.1 v-model用在html标签上 4.2 v-model用在组件标签上 4.3 v-model 命名 4.4 总结 5. $attrs 6. $refs 和 $parent 7. provide 和 inject 8. pinia 9. slot 插槽 10. 总结 组件通信是指在不同组件之间传递数据…

云原生AI Agent应用安全防护方案最佳实践(上)

当下,AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式,利用大语言模型(LLM)作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤,并结合迭代反馈循环和自省机制&#xff0…

本地部署DeepSeek摆脱服务器繁忙

由于图片和格式解析问题,可前往 阅读原文 最近DeepSeek简直太火了,频频霸榜热搜打破春节的平静,大模型直接开源让全球科技圈都为之震撼!再次证明了中国AI的换道超车与崛起 DeepSeek已经成了全民ai,使用量也迅速上去了…

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…

Postman如何流畅使用DeepSeek

上次写了一篇文章是用chatBox调用api的方式使用DeepSeek,但是实际只能请求少数几次就不再能给回响应。这回我干脆用最原生的方法Postman调用接口请求好了。 1. 通过下载安装Postman软件 postman下载(https://pan.quark.cn/s/c8d1c7d526f3),包含7.0和10…

部署 DeepSeek R1各个版本所需硬件配置清单

DeepSeek-R1 通过其卓越的推理性能和灵活的训练机制,在 2025 年的春节期间受到了广泛关注。 DeepSeek-R1 是一款高性能的 AI 推理模型,主要通过强化学习技术来增强模型在复杂任务场景下的推理能力。 在本地部署 DeepSeek-R1 时,尤其是完整的…

[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue医疗(医院)挂号管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上,关于信息上…

Linux初始化 配置yum源

问题出现:(报错) 1 切换路径 2 备份需要操作的文件夹 3 更改 CentOS 的 YUM 仓库配置文件,以便使用阿里云的镜像源。 4 清除旧的yum缓存 5 关闭防火墙 6 生成新的yum缓存 7 更新系统软件包 8 安装软件包 补充:使用Pow…

ds-download-link 插件:以独特图标选择,打造文章下载链接

源码介绍 “ds-download-link”插件为 WordPress 网站提供了在文章编辑器中添加下载链接的功能,每个下载链接都支持图标选择,并能将这些链接以美观的样式展示在文章前端页面。以下是该插件的主要特性和功能: 后台功能 在文章编辑器下方添加…

好好说话:深度学习扫盲

大创项目是和目标检测算法YOLO相关的,浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么? 之前经常听到AI,机器学习,深度学习这三个概念,但是对于三者的区别一直很模糊。 AI&…

node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作,有兴趣的话可…

【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.4 微调脚本 2.3 踩坑经验2.3.1 问题一:ValueError: Undefined dataset xxxx in dataset_info.json.2.3.2 问题二: ValueError: Target…

灵活运用yaml格式配置你的python项目

Python开发时常用的配置文件后缀是.ini、.conf、.py、.json,今天风云要介绍的 .yaml 是当下最推荐的配置文件格式。容易阅读和修改,支持注释,且支持丰富的数据类型。 YAML(YAML Aint Markup Language)是一种人类可读的…

DeepSeek 指导手册(入门到精通)

第⼀章:准备篇(三分钟上手)1.1 三分钟创建你的 AI 伙伴1.2 认识你的 AI 控制台 第二章:基础对话篇(像交朋友⼀样学交流)2.1 有效提问的五个黄金法则2.2 新手必学魔法指令 第三章:效率飞跃篇&…

Tcp_socket

Tcp不保证报文完整性(面向字节流) 所以我们需要在应用层指定协议,确保报文完整性 // {json} -> len\r\n{json}\r\n bool Encode(std::string &message) {if(message.size() 0) return false;std::string package std::to_string(m…