首页 > 其他分享 >es笔记四之中文分词插件安装与使用

es笔记四之中文分词插件安装与使用

时间:2023-05-17 21:06:25浏览次数:53  
标签:中文 exam 插件 address 安装 分词 es

本文首发于公众号:Hunter后端 原文链接:es笔记四之中文分词插件安装与使用

前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要使用中分分词。

这里我们介绍一下如何安装中文分词插件。

在介绍安装之前,我们可以先来测试一下没有中文分词的分词效果,我们先来插入一条数据:

PUT /exam/_doc/16
{
    "name" : "张三丰",
    "address": "一个苹果"
}

如果是中文分词,我们可以想到 '一个苹果' 应该会被分为 '一个' 和 '苹果' 这两个词,但是默认的分词是无法这样分词的,我们可以尝试搜索一下:

GET /exam/_search
{
  "query": {
    "term": {
      "address": "一个"
    }
  }
}

可以发现是无法搜索到结果的。

我们可以查看一下这条数据的 address 字段被分词的结果:

GET /exam/_doc/16/_termvectors?fields=address

其中,_doc 后面的 16 是我们要查询的数据的 id,fields 后面跟着的要查看的分词结果的字段名。

可以看到 一个苹果 这个字符串,被挨个分成了四个。

然后我们来安装一下中文分词的插件。

安装中文分词插件

在 elasticsearch 安装的目录下,执行下面的语句:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip

这里我们安装的是 7.6.0 版本的 es,所以安装对应的分词插件。

然后我们重新建立这个 index,为 address 字段加上指定的分词插件:

挨个执行下面的命令:

DELETE /exam/

PUT /exam

PUT /exam/_mapping
{
  "properties": {
    "address": {
      "type": "text",
      "analyzer": "ik_max_word",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    },
    "name": {
      "type": "keyword"
    }
  }
}

这里,和第一次创建 mapping 的时候比,多了一行 analyzer 的定义。

然后我们再次重复上面的插入和查询操作:

PUT /exam/_doc/16
{
    "name" : "张三丰",
    "address": "一个苹果"
}

GET /exam/_search
{
  "query": {
    "term": {
      "address": "一个"
    }
  }
}

可以看到,这次我们搜索 一个,就可以查询到数据了。

然后我们看下这条数据的 address 的分词结果:

GET /exam/_doc/16/_termvectors?fields=address

可以看到,这次返回的结果除了单独的 '一' 和 '个' 之外,还有被分成整体的 '一个' 和 '苹果'。

查看分词结果

这里额外介绍一下如何查看字符串的分词。

如果我们有一个字符串,想要知道它会被如何分词,可以直接使用下面的命令:

POST /_analyze
{
  "analyzer": "ik_smart",
  "text": "一个苹果"
}

其中,analyzer 是指定的分词的插件,如果不指定就会使用默认的分词功能。

中文分词插件的github 地址如下:https://github.com/medcl/elasticsearch-analysis-ik

标签:中文,exam,插件,address,安装,分词,es
From: https://blog.51cto.com/u_16061969/6293636

相关文章

  • 07_TypeScript 条件语句
    07_TypeScript条件语句条件语句通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。在TypeScript中,我们可使用以下条件语句:if语句-只有当指定条件为true时,使用该语句来执行代码if...else语句-当条件为true时执行......
  • 第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作
     第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作: 0^^Hadoop^^America^^5000|8000|12000|level8^^male1^^Spark^^America^^8000|10000|15000|level9^^famale2^^Flink^^America^^7000|8000|13000|level10^^male3^^Hadoop^^America^^9000|11000|12000|level10^^f......
  • k8s删除命名空间namespace一直显示Terminating问题处理
    转载自:https://huaweicloud.csdn.net/638db195dacf622b8df8c5f7.html============= 1、问题现象假设我们的现在要删除的namespace是dev,执行如下命令进行删除:执行如下命令查看namespace删除情况:可以看到删除状态显示Terminating,而且会一直持续这个状态。并且用:kubectldeleten......
  • Request类的源码分析和序列化与反序列化
    Request类的源码分析和序列化与反序列化Request类源码分析#源码分析: self._request=request#将老的request传给_requestdef__getattr__(self,attr):try:returngetattr(self._request,attr)#在老的request中找attr找到了就返回这个方法......
  • drf——Request源码分析、序列化组件、序列化类的使用(字段类和参数)、反序列化校验和
    1.Request类源码分析#APIView+Response写个接口#总结: 1.新的request有个data属性,以后只要是在请求body体中的数据,无论什么编码格式,无论什么请求方式2.取文件还是从:request.FILES3.取其他属性,跟之前完全一样request.method.... 原理:新的request重写了__g......
  • GT-HMI Designer安装教程
    一、简介GT-HMI(HumanMachineInterface)国产开源GUI框架及永久免费设计软件。它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。针对国内市场及用户需求,使用习惯进行了优化设计,为国内工程师量身打造!产品由中国高通GENITOP倾心打造,继承了中国......
  • Ubuntu Desktop 变为 Ubuntu Server 服务器版的方法
    去Ubuntu官网看到有好几种版本可以下载,alternate(文本安装)、desktop9(桌面)、netbook(上网本)、server(服务器)。使用server版某个理由:32位的系统可以使用4G以上的内存,最多能到64G。前提是主板能够支持特别提示。32位系统,打开内存得映射功能后,系统将不能使用休眠功能(休眠与待机不同)驱动......
  • bayesian优化demo运行
    bayesian优化demo运行参考链接:贝叶斯优化准备工作在所使用的python版本下,应有一个bayes_opt目录如下:如果没有这个目录,可以用pipinstallbayesian-optimization命令下载demo代码新建一个python文件basic_bayesian.py,其中代码如下:defblack_box_function(x,y):"""Fun......
  • C#开发ESP32E(1)IO配置操作
    1.Nuget安装nanoFramework.System.Device.Gpio2.创建GpioController和GpioPin对象点击查看代码vargpio=newGpioController();//参数1为引脚号(查看电路图)(此处对应为D2灯)//参数2为模式(输入,输出,上下拉等)(此处对应为输出)varled=gpio.OpenPin(2,PinMode.Output);......
  • 【CF446C】DZY Loves Fibonacci Numbers(线段树)
    Description给定一个序列,资瓷区间加上一个斐波那契数列,区间求和。Solution有一个性质:fib[a+b]=fib[a−1]×fib[b]+fib[a]×fib[b+1]fib[a+......