Elasticsearch中的分词器的基本介绍以及使用

目录

一、分词器的基本概念

二、分词器类别

(1)默认分词器

(2)IK分词器

(3)拼音分词器

(4)自定义分词器


一、分词器的基本概念

在Elasticsearch中,分词器(Tokenizer)是一个用于将文本数据分割成单独的词汇单元的组件。这是搜索引擎索引和搜索文本数据的重要步骤之一。分词器的任务是将输入的文本按照一定的规则拆分成一个个词汇单元,以便在建立索引和执行搜索时能够更精确地匹配和检索文档。

分词器通常包括两个主要组件:分词器(Tokenizer)和过滤器(Filter)。这两个组件的组合定义了文本数据如何被拆分和处理。

  1. 分词器(Tokenizer): 分词器负责将输入文本切分成词汇单元。它的工作是根据一些规则(例如空格、标点符号等)将文本拆分成词汇单元。

  2. 过滤器(Filter): 过滤器负责对分词后的词汇进行进一步的处理,以改变或增强这些词汇。例如,可以使用过滤器进行小写转换、去除停用词、词干提取等操作。

Elasticsearch提供了许多内置的分词器和过滤器,同时也支持用户自定义分词器。这使得用户能够根据其特定的需求选择合适的分词器和过滤器,以确保索引和搜索的准确性和效率。

在中文环境中,由于中文没有空格来分隔单词,所以针对中文文本,通常需要使用专门设计的中文分词器,例如Elasticsearch中的IK Analyzer。这样的分词器能够更好地理解中文文本的语义和结构,提高搜索的准确性。

说的简单点分词器就是将一句话中的词语划分出来。

二、分词器类别

(1)默认分词器

默认分词器只支持英文,并不支持中文的。

GET /_analyze
{"text":测试语句, "analyzer":standard
}举例:
GET /_analyze
{"text":"i am good boy","analyzer": "standard"
}

(2)IK分词器

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。提供了两种分词算法:

  • ik_smart:最少切分

  • ik_max_word:最细粒度划分

注:在使用IK分词器一定要安装哦!这里有教程文章:IK分词器的安装

//测试ik分词器是否安装完成
GET /_analyze
{"text":"我是百战程序员","analyzer": "ik_max_word"
}

IK分词器词典介绍

IK分词器根据词典进行分词,词典文件在IK分词器的config目录中。

  • main.dic:IK中内置的词典。记录了IK统计的所有中文单词。

  • IKAnalyzer.cfg.xml:用于配置自定义词库。

  • <properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 ,然后自己创建该文件即可,表示的是可以允许符合规则的词汇--><entry key="ext_dict">ext_dict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典,然后创建该文件即可,表示的是禁止的词汇--><entry key="ext_stopwords">ext_stopwords.dic</entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    

(3)拼音分词器

拼音分词器可以将中文分成对应的全拼,全拼首字母等。比如有时候在搜索框中输入拼音也可以出现对应的一些目标。

拼音分词器的安装:拼音分词器的安装

GET /_analyze
{"text":"我爱英雄联盟","analyzer": "pinyin"
}

(4)自定义分词器

真实开发中我们往往需要对一段内容既进行文字分词,又进行拼音分词,此时我们需要自定义ik+pinyin分词器。

创建自定义分词器一定要在创建索引时就要创建!

PUT /索引名
{"settings" : {"analysis" : {"analyzer" : {"ik_pinyin" : { //自定义分词器名"tokenizer":"ik_max_word", // 基本分词器"filter":"pinyin_filter" // 配置分词器过滤}},"filter" : { // 分词器过滤时配置另一个分词器,相当于同时使用两个分词器"pinyin_filter" : { "type" : "pinyin", // 另一个分词器// 拼音分词器的配置,这些配置可以在github官网上查找"keep_separate_first_letter" : false, // 是否分词每个字的首字母"keep_full_pinyin" : true, // 是否分词全拼"keep_original" : true, // 是否保留原始输入"remove_duplicated_term" : true // 是否删除重复项}}}},"mappings":{"properties":{"域名1":{"type":域的类型,"store":是否单独存储,"index":是否创建索引,"analyzer":分词器},"域名2":{ ...}}}
}
//具体的举例PUT /student3
{"settings": {"analysis": {"analyzer": {"ik_pinyin":{"tokenizer":"ik_max_word","filter":"pinyin_filter"}}, "filter": {"pinyin_filter":{"type":"pinyin","keep_separate_first_letter" : false, "keep_full_pinyin" : true, "keep_original" : true, "remove_duplicated_term" : true }}}},"mappings": {"properties": {"name":{"type": "text","analyzer": "ik_pinyin","store": true,"index": true},"age":{"type": "integer"}}}
}
//测试GET /student3/_analyze
{"text":"我是程序员","analyzer": "ik_pinyin"
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04_前后端交互技术之Ajax异步请求

本课目标 理解什么是同步请求和异步请求理解Ajax的请求原理掌握Ajax的基本用法掌握课堂案例 1. 同步请求与异步请求的区别 1.1 什么是同步请求 同步请求&#xff1a;发送请求后需要等待服务端响应&#xff0c;同步请求阻止代码的执行&#xff0c;这会导致屏幕上出现“冻结”…

Linux exit命令教程:结束当前的登录会话(附案例详解和注意事项)

Linux exit命令介绍 exit命令用于结束当前的登录会话。当你在命令行界面&#xff08;shell&#xff09;运行exit命令时&#xff0c;它会终止你当前的shell会话。 在命令行界面或shell脚本中执行exit命令默认会直接退出终端&#xff0c;或者你还可以在exit命令后添加一个参数&…

Linux中断 -- 中断路由、优先级、数据和标识

目录 1.中断路由 2.中断优先级 3.中断平衡 4.Linux内核中重要的数据结构 5.中断标识 承前文&#xff0c;本文从中断路由、优先级、数据结构和标识意义等方面对Linux内核中断进行一步的解析。 1.中断路由 Aset affinity flow GIC文中有提到SPI类型中断的路由控制器寄存器为…

华为HCIP Datacom H12-831 卷14

多选题 1、以下哪些Community属性可以保证BGP路由条目的传播范围只在AS内? A No_Export B No_Export_Subconfed C Interne D No_Advertise 正确答案 A,B 解析&#xff1a;Internet&#xff1a;缺省情况下&#xff0c;所有的路由都属于internet团体。具有此属性的路由…

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据…

ubuntu-base(arm64与riscv64) 根文件系统, 并用qemu启动

ubuntu-base&#xff08;arm64与riscv64&#xff09; 根文件系统 有个小需求&#xff0c;是在 arm64 和 riscv64 上都跑起来 speccpu 2017 首先在 Qemu 上跑起来&#xff0c;需要考虑需要的【Linux 内核、根文件系统、Bootloader】&#xff0c;其中 Bootloader 在 Qemu 中可以很…

Kong: Services and Routes 等基本属性

Services 在Kong Gateway中&#xff0c;服务是现有上游应用程序的抽象。服务可以存储插件配置和策略等对象的集合&#xff0c;并且可以与路由相关联。 定义服务时&#xff0c;管理员会提供名称和上游应用程序连接信息。连接详细信息可以在 url 字段中以单个字符串的形式提供…

RCC——使用HSE/HSI配置时钟

RCC 文章目录 前言一、背景二、仿真计算周期 2.1 2.2 三、MCO引脚输出时钟总结 前言 前期疑问&#xff1a;1、RCC是什么意思。 2、最终配好的72M是系统时钟吗&#xff1f; 3、一共有哪些时钟 本文目标&#xff1a;将PLL时钟配置成72M 疑问解答&#xff1a;最终配好的时钟是…

用Flask打造一个大模型智能问答WEB网站

目前已经有很多类似GPT的大模型开源,可以提供类似ChatGPT的智能问答功能。我也基于这些开源模型,用Flask来建立一个智能问答网站,可以方便用户建立自己的ChatGPT系统。 这个网站需要提供用户登录功能,对已登录的用户,可以在网站上提出问题,并由大模型处理后返回答案。演…

C++ 实现多线程的生产者(producer) - 消费者(consumer) 模型

1. 模型介绍&#xff1a; 生产者消费者模型是操作系统中的一种并发编程模型&#xff0c;用于解决生产者和消费者之间的数据共享和同步问题。 在该模型中&#xff0c;生产者负责生成数据&#xff0c;并将数据放入一个有限的缓冲区中&#xff0c;而消费者则从缓冲区中取出数据进…

网上零食销售系统

技术架构&#xff1a; Servlet MySQL JSP 功能描述&#xff1a; 1.浏览商品 &#xff08;1&#xff09; 商品详细资料 &#xff08;2&#xff09; 商品编号 2.订购商品 3.购物车 4.用户信息维护 &#xff08;1&#xff09; 用户注册 &#xff08;2&#xff09; 用户…

04-Seata修改通信端口

基于docker环境部署下&#xff0c;可以翻看专栏之前的文章 配置文件 /home/server/seata/resources/application.yml 默认${server.port} 1000 1、修改服务端(TC)配置 seata:server:service-port: 7090 2、修改映射端口 在启动脚本中修改映射端口 docker run -id --nam…

嵌入式——实时时钟(RTC)

目录 一、初识RTC 1.简介 2.特性 3.后备寄存器和RTC寄存器特性 二、RTC组成 1.相关寄存器 &#xff08;1&#xff09;控制寄存器高位&#xff08;RTC_CRH&#xff09; &#xff08;2&#xff09;控制寄存器低位&#xff08;RTC_CRL&#xff09; &#xff08;3&#xf…

『建议收藏』OpenAI官方出的Prompt提示词教程中文版来了!

一些结论 六大策略: 写清晰的指令 提供参考文本 将复杂任务分解为更简单的子任务 给模型时间“思考” 使用外部工具 系统性测试变化 提高结果质量的六大策略 写清晰的指令 这些模型无法读懂你的想法。如果输出过长&#xff0c;要求简短回复&#xff1b;如果输出过于简单…

Redis客户端之Redisson(二)Redisson组件

Redisson的几个常用客户端 一、RedissonClient 1、创建 通过Config对象配置RedissonClient所需要的参数&#xff0c;然后获取RedissonClient对象即可。 Config config new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); RedissonC…

【python】argparse解析参数的过程

python基础知识 python文件解析if __name__ __main__的作用import到底导入了什么&#xff1f;argparse解析命令行参数的过程 python文件解析 Python和C语言的编译、执行过程有很大区别。我们先回顾一下c语言的执行过程&#xff0c;首先代码文件要编译&#xff0c;编译通过&am…

【C++杂货铺】详解类和对象 [上]

博主&#xff1a;代码菌-CSDN博客 专栏&#xff1a;C杂货铺_代码菌的博客-CSDN博客 目录 &#x1f308;前言&#x1f308; &#x1f4c1; 面向对象语言的特性 &#x1f4c1; 类 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 访问限定符 &#x1f4c2;分类 &#x…

《WebKit 技术内幕》学习之十五(1):Web前端的未来学习

1 趋势 说到Web方面的趋势&#xff0c;特别是HTML5获得的巨大发展&#xff0c;W3C和WHATWG等组织正在不停地推动规范的演进和引入新的规范&#xff0c;这一举动必将极大地推动Web前端的发展。就目前Web前端来说&#xff0c;各种类型的技术非常多&#xff0c;极容易引起大家的误…

CMake 完整入门教程(一)

1 前言 每一次学习新东西都是很有乐趣的&#xff0c;虽然刚开始会花费时间用来学习&#xff0c;但是实践证明&#xff0c;虽然学习新东西可能会花费一些时间&#xff0c;但是它们带来的好处会远远超过这些花费的时间。学习新东西是值得的&#xff0c;也是很有乐趣的。 网络上…

【K8S 云原生】K8S的图形化工具——Rancher

目录 一、rancher概述 1、rancher概念 2、rancher和K8S的区别&#xff1a; 二、实验 1、安装部署 2、给集群添加监控&#xff1a; 3、创建命名空间&#xff1a; 4、创建deployment&#xff1a; 5、创建service&#xff1a; 6、创建ingress&#xff1a; 7、创建hpa 8…