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

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

时间:2023-07-11 20:48:19浏览次数:37  
标签:中文 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

如果想获取更多后端相关文章,可扫码关注阅读:
image

标签:中文,exam,插件,address,安装,分词,es
From: https://www.cnblogs.com/hunterxiong/p/17545854.html

相关文章

  • AtCoder Beginner Contest 309 G Ban Permutation
    洛谷传送门AtCoder传送门前置知识:[ARC132C]AlmostSorted看\(\geX\)不顺眼,怎么办呢!直接容斥!钦定\(j\)个位置满足\(|P_i-i|<X\),其余任意,就转化成了[ARC132C]AlmostSorted。具体一点就是,你设\(f_{i,j,S}\)表示前\(i\)位有\(j\)个位置满足\(|P_i-i|<......
  • Codeforces Round #771 (Div. 2) A-E
    A代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intp[507];boolsolve(){intn;cin>>n;for(inti=1;i<=n;i++)cin>>p[i];intpos1=0,pos2=0;for(inti=1;i<=n;i++){......
  • django_filters/rest_framework/form.html的报错问题
    报错问题:django_filters/rest_framework/form.htm报错原因为:1没有装django_filters模块使用pip安装pipinstalldjango-filter2模块没有在配置文件中注册:将django_filters添加到installed_apps中INSTALLED_APPS=[...'django_filters',] ......
  • 数字孪生系统如何整合CesiumJS?整合后会产生怎样的化学反应?
    数字孪生有关的项目中,智慧城市一直是一个比较重要的类型,但是这类智慧城市项目往往包含了大量的GIS相关数据,例如倾斜摄影、DEM、DOM、地形数据等。这时,将GIS系统融合进数字孪生系统的需求就出现了。这时一个新的问题就出现了,如果将GIS系统和数字孪生系统进行融合,那么该如何保证融......
  • IntelliJ IDEA 最受欢迎的插件有哪些
    IntelliJIDEA是一款功能强大的集成开发环境,支持众多插件扩展。以下是一些在IntelliJIDEA中广受欢迎的插件:Lombok:简化Java代码的编写,自动生成getter、setter、构造函数等常用代码。GitIntegration:提供与Git版本控制系统的集成,方便代码的提交、分支管理和代码审......
  • IntelliJ IDEA 最受欢迎的插件有哪些
    IntelliJIDEA是一款功能强大的集成开发环境,支持众多插件扩展。以下是一些在IntelliJIDEA中广受欢迎的插件:Lombok:简化Java代码的编写,自动生成getter、setter、构造函数等常用代码。GitIntegration:提供与Git版本控制系统的集成,方便代码的提交、分支管理和代码审......
  • pytest生成测试报告无数据
    1、排除用pytest生成的数据是没有问题的可以通过pytest--alluredir=report检查2、了解使用的语句:alluregeneratereport(用report文件夹中的数据,生成allure打开的图形界面的)我操作的失误在第二点,直接进入到report文件夹执行。导致生成的项目的时候,数据没有被读取。解决方案:......
  • 论文阅读 | Penetration Testing Active Reconnaissance Phase – Optimized Port Sca
    我们可以使用TCP端口扫描对物联网设备进行分类吗?https://ieeexplore.ieee.org/document/8913346 1介绍在[10]中,我们根据统计属性(如活动周期,端口号,信令模式和密码套件)来表征物联网流量。此外,提出了一个多阶段机器学习模型,使用从配备特殊硬件加速(例如NetFlow)的网络交换机......
  • 全局重写Element UI中的Message消息提示显示时长
    需求:Message消息提示显示时长过长环境:"vue":"2.6.12"、"element-ui":"^2.15.6"等解决步骤:1、在项目中找到main.js文件2、引人下面两个文件importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';3、重写$messa......
  • [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
    [Errno14]PYCURLERROR22-"TherequestedURLreturnederror:404NotFound"  vi/etc/yum.repos.d/epel.repoenabled=0vi/etc/yum/pluginconf.d/fastestmirror.confenable=0wget-O/etc/yum.repos.d/CentOS-Base.repohttp://allen-hz-bucket.oss-......