> 文章列表 > Elasticsearch7.8.0版本进阶——IK中文分词器

Elasticsearch7.8.0版本进阶——IK中文分词器

Elasticsearch7.8.0版本进阶——IK中文分词器

目录

    • 一、ES 的默认分词器测试示例
    • 二、IK 中文分词器
      • 2.1、IK 中文分词器下载地址
      • 2.2、ES 引入IK 中文分词器
      • 2.3、IK 中文分词器测试示例
    • 三、ES 扩展词汇测试示例

一、ES 的默认分词器测试示例

  • 通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定要分析的文本

    # GET http://localhost:9200/_analyze
    {"text":"王者荣耀"
    }
    

    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 输出结果如下:
    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 由上图输出结果可知,ES 的默认分词器无法识别中文中测试、单词这样的词汇,而是简单的将每个字拆完分为一个词,这样的结果显然不符合我们的使用要求,所以我们需要下载 ES 对应版本的中文分词器。

二、IK 中文分词器

2.1、IK 中文分词器下载地址

  • 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0
    在这里插入图片描述

2.2、ES 引入IK 中文分词器

  • 将IK 中文分词器安装包解压,然后把解压后的文件夹放入 ES 根目录下的 plugins 目录下,重启 ES 即可使用。
    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 注意:ES的安装目录一定不要带有中文或者空格,否则引入IK 中文分词器会报如下错误:

    java.security.AccessControlException: access denied ("java.io.FilePermission""D:\\Program Files\\elasticsearch-7.8.0\\plugins\\elasticsearch-analysis-ik-7.8.0\\config\\IKAnalyzer.cfg.xml" "read")
    

2.3、IK 中文分词器测试示例

  • 通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定分析器和要分析的文本

    # GET http://localhost:9200/_analyze
    {"analyzer":"ik_max_word","text": "王者荣耀"
    }
    

    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 分析器的key值解释

    分析器的key值 分析器的key值解释
    ik_max_word 会将文本做最细粒度的拆分
    ik_smart 会将文本做最粗粒度的拆分
  • 使用IK中文分词后的结果为:
    Elasticsearch7.8.0版本进阶——IK中文分词器

三、ES 扩展词汇测试示例

  • 通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定分析器和要分析的文本

    # GET http://localhost:9200/_analyze
    {"text":"弗雷尔卓德","analyzer":"ik_max_word"
    }
    
  • 输出结果如下:
    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 由上图输出结果可知,仅仅可以得到每个字的分词结果。如何使分词器识别到弗雷尔卓德也是一个词语。

  • 首先进入 ES 根目录中的 plugins 文件夹下的 ik 文件夹,进入 config 目录,创建 custom.dic
    文件,写入弗雷尔卓德。,如下图:

    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 注意:custom.dic文件内容的格式的编码为UTF-8格式编码,否则会导致扩展词汇失效。

    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 同时打开 IKAnalyzer.cfg.xml 文件,将新建的 custom.dic 配置其中,如下图:

    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 重启 ES 服务器。由下图可知,文件确实被加载了。
    Elasticsearch7.8.0版本进阶——IK中文分词器

  • 然后通过 Postman 发送 GET 请求查询分词效果。如下图:
    Elasticsearch7.8.0版本进阶——IK中文分词器