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

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch7.8.0版本进阶——IK中文分词器相关的知识,希望对你有一定的参考价值。

目录

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

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

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

  • 输出结果如下:

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

二、IK 中文分词器

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

2.2、ES 引入IK 中文分词器

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

  • 注意: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": "王者荣耀"
    
    

  • 分析器的key值解释

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

三、ES 扩展词汇测试示例

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

    # GET http://localhost:9200/_analyze
    
    	"text":"弗雷尔卓德",
    	"analyzer":"ik_max_word"
    
    
  • 输出结果如下:

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

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

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

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

  • 重启 ES 服务器。由下图可知,文件确实被加载了。

  • 然后通过 Postman 发送 GET 请求查询分词效果。如下图:

以上是关于Elasticsearch7.8.0版本进阶——IK中文分词器的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch7.8.0版本进阶——倒排索引

Elasticsearch7.8.0版本进阶——近实时搜索

Elasticsearch7.8.0版本进阶——分片控制

Elasticsearch7.8.0版本进阶——分布式集群(故障转移)

Elasticsearch7.8.0版本进阶——持久化变更

Elasticsearch7.8.0版本进阶——数据更新流程