码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • es笔记四之中文分词插件安装与使用


    合集 - Elasticsearch笔记(7)
    1.es笔记一之es安装与介绍05-182.es 笔记二之基础查询05-193.es笔记三之term,match,match_phrase 等查询方法介绍05-20
    4.es笔记四之中文分词插件安装与使用05-21
    5.es笔记五之term-level的查询操作05-236.es笔记六之聚合操作之指标聚合05-247.es笔记七之聚合操作之桶聚合和矩阵聚合05-25
    收起

    本文首发于公众号: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

  • 相关阅读:
    三星SSD硬盘性能压测报告
    vue项目的环境准备与创建详情
    实战PyQt5: 140-QChart图表之烛台图
    数据集笔记:上海摩拜共享单车
    线程调度算法?
    Web of science,scopus,Google scholar的介绍和区别
    服务访问质量(QoS)介绍与技术 一
    【Jquery】-------JS实现关键字检索html内容,符合关键字的匹配项,进行标注背景色,可进行上一个,下一个切换定位
    centos7安装mysql8
    JavaScript入门 Vuex/elementPlus UI组件库 Day08
  • 原文地址:https://www.cnblogs.com/hunterxiong/p/17418801.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号