ES-IK分词器的概念和基本使用

news2024/11/15 13:31:26

文章目录

  • 一、ES-IK分词器
    • 1.1 初识ES-IK分词器
    • 1.2 IK分词器-拓展和停用
    • 1.3 索引库
      • 1.3.1 mapping属性
      • 1.3.2 索引库的CRUD
        • 基本语法:
      • 1.3.3 文档的DSL

一、ES-IK分词器

1.1 初识ES-IK分词器

  ES IK分词器是一种基于中文文本的分词器,它是Elasticsearch中文分词的一种实现。它采用了自然语言处理技术,可以将中文文本进行切分,抽取出其中的词汇,从而提高搜索引擎对中文文本的搜索和检索效率。

  ES IK分词器的原理是采用了一种叫做“正向最大匹配”(Forward Maximum Matching,简称FMM)和“逆向最大匹配”(Backward Maximum Matching,简称BMM)的分词算法,通过对文本进行多次切分,最终确定最优的分词结果。

  ES IK分词器可以用于各种中文文本处理应用,包括搜索引擎、文本挖掘、信息检索等。它支持多种分词模式,包括最细粒度切分、智能切分和最大切分等模式,可以根据具体应用场景进行灵活配置。

1.2 IK分词器-拓展和停用

  1. 要拓展或停用ik分词器的词库,需要修改ik分词器目录中的config目录中的IkAnalzer.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">ext.dic</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic</entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
  1. 进行拓展词汇的时候需要创建出所定义的扩展字典文件,例如本文使用的是ext.dic,再往文件中填写词汇即可,每个词汇占一行,如下图:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZnQHf6JM-1682007066424)(C:\Users\35990\AppData\Roaming\Typora\typora-user-images\image-20230420222010056.png)]

  2. 进行停用词库的时候打开stopword.dic文件,再往文件中添加词汇即可,每个词汇占一行,如下图(一般停用的都是语气词、严禁品等):

在这里插入图片描述

1.3 索引库

1.3.1 mapping属性

  在Elasticsearch中,mapping属性是指用于定义索引中文档的结构和属性的方式。它描述了索引中文档的字段名称、类型、分词器等元信息,这些元信息可以用于搜索、过滤和排序。

具体来说,mapping属性定义了索引中每个字段的以下信息:

  1. 字段类型(type):指定字段的数据类型,例如文本、数值、日期等。
  2. 分词器(analyzer):指定字段的分词器,用于对文本进行分词处理。
  3. 是否索引(index):指定字段是否需要被索引,如果需要,Elasticsearch将对该字段建立反向索引以支持全文检索,默认为true。
  4. 子字段(properties):该字段的子字段;

  除此之外,mapping属性还可以指定文档中的嵌套对象、数组(数组不是类型,只是可以传多个数据)等复杂类型,并对其进行相应的定义和配置。

1.3.2 索引库的CRUD

  1. 创建索引库和映射

基本语法:

  • 请求方式:PUT
  • 请求路径:/索引库名,可以自定义
  • 请求参数:mapping映射

格式:

PUT /索引库名称
{
  "mappings": {
    "properties": {
      "字段名":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "字段名2":{
        "type": "keyword",
        "index": "false"
      },
      "字段名3":{
        "properties": {
          "子字段": {
            "type": "keyword"
          }
        }
      },
      // ...略
    }
  }
}
  1. 查看索引库

基本语法

  • 请求方式:GET

  • 请求路径:/索引库名

  • 请求参数:无

格式

GET /索引库名
  1. 修改索引库

  倒排索引结构一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引。因此索引库一旦创建,无法修改mapping,但是可以添加新的字段到mapping中,也不会对倒排索引产生影响。

语法说明

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": "integer"
    }
  }
}
  1. 删除索引库

语法:

  • 请求方式:DELETE

  • 请求路径:/索引库名

  • 请求参数:无

格式:

DELETE /索引库名

1.3.3 文档的DSL

  1. 增加文档

语法:

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
    // ...
}
  1. 删除文档

语法:

DELETE /{索引库名}/_doc/id值
  1. 修改文档

a. 全量修改:

全量修改是覆盖原来的文档,其本质是:

  • 根据指定的id删除文档
  • 新增一个相同id的文档

注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。

语法:

PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

b. 增量修改:

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}
  1. 查询文档

语法:

GET /{索引库名称}/_doc/{id}

``

b. 增量修改:

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}
  1. 查询文档

语法:

GET /{索引库名称}/_doc/{id}

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

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

相关文章

DJ4-4 网际协议:因特网中的转发和编址

目录 一、因特网中的网络层协议 二、IP 数据报格式&#xff08;IPv4&#xff09; 三、IP数据报分片和重组 1. 分片的概述 2. 分片的例子 四、IP 地址 1. IP 地址概述 2. IPv4 编址 3. IP 地址结构 4. 传统的 IP 地址分类 5. ABC 类地址 6. 特殊 IP 地址段 7. 特殊…

Mysql 截取字符串并将文本转换为数值

有一个需求, 需要在 字符串 20230410 中获取 月份(04), 然后变为 (4), 解决: SELECT cast(left(SUBSTRING(20230410, 5),2) as SIGNED); 用到的函数有 left(str, length) substring(str, pos)&#xff0c;即&#xff1a;substring(被截取字符串&#xff0c; 从第几位开始截…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习&#xff0c;了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 &#xff08;1&a…

一起学 WebGL:复合矩阵

大家好&#xff0c;我是前端西瓜哥。之前讲了平移矩阵、旋转矩阵以及缩放矩阵&#xff0c;以及演示了在 WebGL 中的单独应用的效果。 这次我们看看同时进行多次矩阵变换的组合写法。 我们将会对一个三角形先平移&#xff0c;然后旋转。 矩阵乘法 简单过一下矩阵乘法的知识点…

Cassandra windos安装

首先从http://cassandra.apache.org/download/网站上找到cassandra&#xff0c;如下图所示&#xff1a; 2、点击3.11.3跳转到下载地址&#xff0c;如下图所示&#xff1a; …

DHCP服务器 DNS服务器 综合实验

配置DNS服务器 DNS服务器 主域服务器host1 192.168.80.101 从域服务器host2 192.168.80.102 DHCP服务器 host1 192.168.80.101 提供192.168.80.0/24网段 IP地址、默认网关、子网掩码、DNS服务器地址、DNS默认域名 客户端 Linux host3 19…

数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

大家好&#xff0c;我是爱吃熊掌的鱼&#xff0c;今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一&#xff0c;它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士&#xff0c;Matplotlib都是…

Eureka 注册中心——服务的注册与发现

文章目录 1.Eureka的结构和作用2.搭建eureka-server2.1.创建eureka-server服务2.2.引入eureka依赖2.3.编写启动类2.4.编写配置文件2.5.启动服务 3.服务注册3.1.引入依赖3.2 配置文件3.3启动多个user-service实例 4.服务发现4.1引入依赖4.2 配置文件4.3 服务拉取和负载均衡 最后…

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的&#xff0c;下载的版本是6.8.0&#xff0c;zip那个就可以&#xff0c;tar.gz是linux的 下载地址&#xff1a;https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

PyCharm-2023安装教程

访问JetBrains的官方网站&#xff0c;下载PyCharm最新版本的安装程序。 双击下载的安装程序&#xff0c;在弹出的安装向导中点击“下一步”。 阅读许可协议&#xff0c;并同意协议条款。 选择安装路径。默认情况下&#xff0c;PyCharm会安装在C:\Program Files\JetBrain…

STL——Lambad表达式

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数 1.gets()&#xff0c;puts() gets()从标准输入中获取一个字符串&#xff0c;到str&#xff08;自己创建的char型数组&#xff09;中&#xff0c;读到换行或输入末尾结束获取r&#xff1b; 成功返回str&#xff0c;失败返回空。 char *gets(char *str)…

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】

ARM汇编第一次上机&#xff08;顺序、分支、单重循环&#xff09;【嵌入式系统】 前言推荐说明ARM汇编第一次上机&#xff08;顺序、分支、单重循环&#xff09;内容1 sum1流程图代码编写结果分析 2 sum2流程图代码编写结果分析 3 numbers流程图代码编写结果分析 最后 前言 20…

Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下&#xff0c;对同一对象进行测量所得的两个样本均值的区别。 比如吃药前和吃药后体温是否有变化&#xff0c;大鱼钩和小鱼钩钓的鱼的体长是否有差异等。 配对样本是什么&#xff1f; 配对样本需要满足两个基本条件&#xff1a; 1. 样本间存…

Java版本工程管理系统软件源码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

【Java 数据结构】PriorityQueue(堆)的使用及源码分析

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

ES配置与使用

一、单机版安装 地址&#xff1a;www.elastic.co 下载tar格式&#xff0c;或者复制链接&#xff0c;wget url下载 启动&#xff1a; ./bin/elasticsearch 二、插件 解决页面问题&#xff0c;GitHub下载&#xff1a;elasticsearch-head 需要node环境。node -v检查node版本…

TryHackMe-Jack(boot2root)

Jack 破坏运行Wordpress的Web服务器&#xff0c;获得低特权用户&#xff0c;并使用Python模块将您的权限升级到root。 端口扫描 循例nmap web枚举 robots.txt wpscan枚举user wpscan直接爆 得到wendy的密码 直接登后台 根据题目提示&#xff0c;利用user role editor帮助我们…

使用chatgpt写一个划词翻译的浏览器插件

最近在网上流行的chatgpt&#xff0c;实在是太火了&#xff0c;好多人在使用&#xff0c;而且它的用处实在是太丰富了&#xff0c;能帮助我们解决很多问题&#xff0c;就比如说&#xff1a;编程&#xff0c;生成图片&#xff0c;翻译等。太丰富了。我看网上很多人都在说&#x…

江苏三年制专转本本法学类考纲配套课程及复习资料

法学类专业课内容比较多&#xff0c;需要背的也很多&#xff0c;今天我来给大家看一下我们应该如何学习法学类&#xff1f;01&#xff1a;考试科目考试科目&#xff1a;大学语文专业课基础理论考试课程A &#xff1a;法理学约 15%课程B&#xff1a;宪法学 约 15%课程C &#xf…