当前位置: 首页 > news >正文

【Elasticsearch】分析器的构成

在Elasticsearch中,分析器(Analyzer)是一个处理文本数据的管道,它将输入的文本转换为一系列词元(tokens),并可以对这些词元进行进一步的处理和规范化。分析器由以下三个主要组件构成:

1.字符过滤器(Character Filters)

字符过滤器是分析器管道中的第一步,用于对输入文本进行预处理。它们可以添加、删除或修改文本中的字符。字符过滤器是可选的,一个分析器可以有零个或多个字符过滤器。

• 常见用途:例如,可以使用字符过滤器去除HTML标签(如`<b>`、`<h1>`等),或者将某些特定字符替换为其他字符。

• 示例:如果输入文本是`<p>Ironman is flying</p>`,通过`html_strip`字符过滤器后,文本会被转换为`Ironman is flying`。

2.分词器(Tokenizer)

分词器是分析器的核心组件,负责将文本分割成单独的词元(tokens)。分词器根据特定的规则(如空白字符、标点符号或语言规则)将文本拆分为多个词元。一个分析器必须且只能有一个分词器。

• 常见分词器:

• 标准分词器(Standard Tokenizer):根据语法和标点符号将文本分割成词元。

• 空白分词器(Whitespace Tokenizer):在遇到空白字符时将文本分割成词元。

• N-gram分词器:生成文本的N-gram片段,常用于自动补全。

• 示例:对于文本`Ironman is flying`,使用空白分词器会生成词元`[Ironman, is, flying]`。

3.词元过滤器(Token Filters)

词元过滤器是分析器管道中的最后一步,用于对分词器生成的词元进行进一步处理。它们可以添加、修改或删除词元,但不能改变词元的位置或字符偏移量。

• 常见用途:

• 小写过滤器(Lowercase Token Filter):将所有词元转换为小写。

• 停用词过滤器(Stop Token Filter):移除常见的停用词(如`the`、`is`等)。

• 同义词过滤器(Synonym Token Filter):引入同义词。

• 词干提取(Stemming):将词元还原为词根形式(如将`went`还原为`go`)。

• 示例:对于词元`[Ironman, is, flying]`,使用小写过滤器后会生成`[ironman, is, flying]`。

总结

分析器通过这三个组件的协同工作,将输入的文本转换为适合索引和搜索的词元流。通过合理配置字符过滤器、分词器和词元过滤器,可以实现对文本的灵活处理,从而提高搜索结果的相关性和准确性。


分析器的构成

 

分析器——无论是内置的还是自定义的——只是一个包含三个低级构建块的包:字符过滤器、分词器和词元过滤器-character filters, tokenizers, and token filters.。

内置分析器将这些构建块预先打包成适合不同语言和文本类型的分析器。Elasticsearch还暴露了这些单独的构建块,以便它们可以组合起来定义新的`自定义`分析器。

字符过滤器接收原始文本作为字符流,并可以通过添加、删除或更改字符来转换该流。例如,字符过滤器可以用于将印度-阿拉伯数字(٠‎١٢٣٤٥٦٧٨‎٩‎)转换为其阿拉伯-拉丁数字等价物(0123456789),或者从流中删除HTML元素,如`<b>`。

分析器可以有零个或多个字符过滤器,这些过滤器按顺序应用。

分词器接收字符流,将其分解为单独的词元(通常是单个单词),并输出一个词元流。例如,`whitespace`分词器会在看到任何空白字符时将文本分解为词元。它会将文本`"Quick brown fox!"`转换为词元`[Quick, brown, fox!]`。

分词器还负责记录每个词元的顺序或位置以及原始单词的起始和结束字符偏移量。

分析器必须有恰好一个分词器。

词元过滤器接收词元流,并可以添加、删除或更改词元。例如,`lowercase`词元过滤器将所有词元转换为小写,`stop`词元过滤器从词元流中移除常见词汇(停用词)如`the`,而`synonym`词元过滤器会向词元流中引入同义词。

词元过滤器不允许更改每个词元的位置或字符偏移量。

分析器可以有零个或多个词元过滤器,这些过滤器按顺序应用。

相关文章:

【Elasticsearch】分析器的构成

在Elasticsearch中&#xff0c;分析器&#xff08;Analyzer&#xff09;是一个处理文本数据的管道&#xff0c;它将输入的文本转换为一系列词元&#xff08;tokens&#xff09;&#xff0c;并可以对这些词元进行进一步的处理和规范化。分析器由以下三个主要组件构成&#xff1a…...

Python 调用 Azure OpenAI API

在人工智能和机器学习快速发展的今天,Azure OpenAI 服务为开发者提供了强大的工具来集成先进的 AI 能力到他们的应用中。本文将指导您如何使用 Python 调用 Azure OpenAI API,特别是使用 GPT-4 模型进行对话生成。 准备工作 在开始之前,请确保您已经: 拥有一个 Azure 账户…...

数据结构 算法时间复杂度和空间复杂度

一、算法好坏的度量 【事前分析法】 算法设计好后&#xff0c;根据算法的设计原理&#xff0c;只要问题规模确定&#xff0c;算法中基本语句执⾏次数和需求资源个数 基本也就确定了。 ⽐如求1 2 3 ... n − 1 n &#xff0c;可以设计三种算法&#xff1a; 算法A&#xff…...

CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测,光伏功率预测

CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测&#xff0c;光伏功率预测 代码下载&#xff1a;CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景及意义 随着全球能源危机和环境问题的日益严重&#xff0c;可再…...

钉钉位置偏移解决,钉钉虚拟定位打卡

虚拟定位打卡工具 一&#xff0c;介绍免费获取工具 一&#xff0c;介绍 提到上班打卡&#xff0c;职场人的内心戏估计能拍成一部连续剧。打卡&#xff0c;这俩字仿佛自带“紧箍咒”&#xff0c;让无数打工人又爱又恨。想象一下&#xff0c;你气喘吁吁地冲进办公室&#xff0c;…...

【面试集锦】如何设计SSO方案?和OAuth有什么区别?

如何设计SSO方案?和OAuth有什么区别?--楼兰 带你聊最纯粹的Java ​ 如果面试问你,你会做一个权限系统吗?那你肯定会说做过。不就是各种登录、验证吗。我做的第一个CRUD应用就是注册、登录。简单!但是,如果问你在工作中真的做过权限系统吗?其实很多人都只能默默摇摇头。因…...

Python 基于 OpenCV 的人脸识别上课考勤系统(附源码,部署教程)

博主介绍&#xff1a;✌2013crazy、10年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&a…...

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...

Tailwind CSS 的核心理念

实用优先&#xff08;Utility-First&#xff09; Tailwind CSS 的最核心理念是"实用优先"。这种方法颠覆了传统的 CSS 开发方式&#xff0c;不再编写自定义的类名和样式规则&#xff0c;而是通过组合预定义的工具类来构建界面。这种方式带来了以下优势&#xff1a; …...

集成学习(二):从理论到实战(附代码)

接上一篇续写《集成学习&#xff08;一&#xff09;&#xff1a;从理论到实战(附代码)》 五、实用算法 5.1 随机森林 随机森林在数据集的各个子样本上拟合许多决策树分类器&#xff0c;并使用平均来提高预测精度和控制过拟合。每一个分类器拟合了一部分随机样本&#xff0c;…...

HTML 链接

HTML 链接 引言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页&#xff0c;还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…...

【机器学习】数据预处理之scikit-learn的Scaler与自定义Scaler类进行数据归一化

scikit-learn的Scaler数据归一化 一、摘要二、训练数据集和测试数据集的归一化处理原则三、scikit-learn中的Scalar类及示例四、自定义StandardScaler类进行数据归一化处理五、小结 一、摘要 本文主要介绍了scikit-learn中Scaler的使用方法&#xff0c;特别强调了数据归一化在…...

android的第一个app项目(java版)

一.学习java重要概念 java的基本类型的语言方法和C语言很像&#xff0c;这都是我们要学的东西和学过的东西。那些基础东西&#xff0c;就不和大家讨论了&#xff0c;一起看一下java的一些知识架构。 1.封装 封装是面向对象编程中的一个核心概念&#xff0c;它涉及到将数据和操…...

上位机知识篇---SSHSCP密钥与密钥对

文章目录 前言第一部分&#xff1a;SCP&#xff08;Secure Copy Protocol&#xff09;功能使用方法1.从本地复制到远程主机2.从远程主机复制到本地3.复制整个目录4.指定端口5.压缩传输 第二部分&#xff1a;SSH&#xff08;Secure Shell&#xff09;功能使用方法1.远程登录2.指…...

智慧物流新引擎:ARM架构工控机在自动化生产线中的应用

工业自动化程度的不断提升&#xff0c;对高性能、低功耗和高可靠性的计算设备需求日益增长。ARM架构工控机因其独特的优势&#xff0c;在多个工业领域得到了广泛应用。本文将深入探讨ARM架构工控机的特点及其在具体工业场景中的应用。 ARM架构工控机的主要优势 高效能与低功耗…...

[MySQL]2-MySQL索引

目录 1.索引&#x1f31f; 1.1索引结构 B树 B树 聚簇索引&#xff08;一级索引&#xff09;与非聚簇索引&#xff08;二级索引&#xff09; 回表操作 1.2索引碎片 清理索引碎片的方法 1.3索引匹配方式&#x1f31f; 在数据列上使用函数或者计算会导致索引失效的原因 …...

DeepSeek冲击下,奥特曼刚刚给出对AGI的「三个观察」,包括成本速降

来源 | 机器之心 今天凌晨&#xff0c;OpenAI CEO 再次发布长文&#xff0c;重申自己对于 AGI 的三个观察。 核心观点如下&#xff1a; 1. 人工智能模型的智能大致等于用于训练和运行该模型的资源的对数。 2. 使用一定水平的人工智能的成本每 12 个月就会下降约 10 倍&#x…...

新数据结构(8)——包装类

基本数据类型&#xff08;轻点&#xff09; Java基本数据类型在内存中占用固定的大小&#xff0c;并且直接存储值&#xff0c;而不是对象的引用 整数类型 byte&#xff1a;8位&#xff0c;存储范围从-128到127 short&#xff1a;16位&#xff0c;存储范围从-32,768到32,767 …...

P5:使用pytorch实现运动鞋识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境&#xff1a;python 3.7.12 编译器&#xff1a;pycharm 深度学习环境&#xff1a;tensorflow 2.7.0 数据&#xff1a;本地数据集-运动鞋 一…...

讲解下SpringBoot中MySql和MongoDB的配合使用

在Spring Boot中&#xff0c;MySQL和MongoDB可以配合使用&#xff0c;以充分发挥关系型数据库和非关系型数据库的优势。MySQL适合处理结构化数据&#xff0c;而MongoDB适合处理非结构化或半结构化数据。以下是如何在Spring Boot中同时使用MySQL和MongoDB的详细讲解。 1. 添加依…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...