美文网首页
ElasticSearch学习笔记3--IK分词器插件

ElasticSearch学习笔记3--IK分词器插件

作者: 荆辰曦 | 来源:发表于2018-09-05 13:56 被阅读0次

    3.1 下载IK分词器插件

    https://github.com/medcl/elasticsearch-analysis-ik/releases

    image.png
    找到与自己ElasticSearch对应版本的进行下载,下载之后解压,在ElasticSearch目录中的plugins目录下新建一个名为的ik文件夹,将解压后文件夹中的所有内容复制到ik文件夹下
    捕获.PNG

    如果你的ElasticSearch部署了多个节点,则别忘了在每个节点都要重复上述操作,即将ik文件夹下的所有文件复制到其他节点。
    在linux环境下:

    [elastic@node1 plugins]$ scp -r ik elastic@node2:/opt/elasticsearch-6.2.3/plugins/
    

    3.2 重启ElasticSearch

    捕获.PNG

    可以在倒数第三行的可以看出,ik分词器插件已经被加载。

    3.3 测试IK中文分词器的基本功能

    (1)ik_smart
    其中pretty本意”漂亮的”,表示以美观的形式打印出JSON格式响应。

    GET _analyze?pretty
    {
      "analyzer": "ik_smart",
      "text":"安徽省长江流域"
    }
    

    分词结果

    {
      "tokens": [
        {
          "token": "安徽省",
          "start_offset": 0,
          "end_offset": 3,
          "type": "CN_WORD",
          "position": 0
        },
        {
          "token": "长江流域",
          "start_offset": 3,
          "end_offset": 7,
          "type": "CN_WORD",
          "position": 1
        }
      ]
    }
    
    20180106185937040.png

    (2)ik_max_word

    GET _analyze?pretty
    {
      "analyzer": "ik_max_word",
      "text":"安徽省长江流域"
    }
    

    分词结果

    {
      "tokens": [
        {
          "token": "安徽省",
          "start_offset": 0,
          "end_offset": 3,
          "type": "CN_WORD",
          "position": 0
        },
        {
          "token": "安徽",
          "start_offset": 0,
          "end_offset": 2,
          "type": "CN_WORD",
          "position": 1
        },
        {
          "token": "省长",
          "start_offset": 2,
          "end_offset": 4,
          "type": "CN_WORD",
          "position": 2
        },
        {
          "token": "长江流域",
          "start_offset": 3,
          "end_offset": 7,
          "type": "CN_WORD",
          "position": 3
        },
        {
          "token": "长江",
          "start_offset": 3,
          "end_offset": 5,
          "type": "CN_WORD",
          "position": 4
        },
        {
          "token": "江流",
          "start_offset": 4,
          "end_offset": 6,
          "type": "CN_WORD",
          "position": 5
        },
        {
          "token": "流域",
          "start_offset": 5,
          "end_offset": 7,
          "type": "CN_WORD",
          "position": 6
        }
      ]
    }
    
    20180106185937040.png

    (3)新词

    GET _analyze?pretty
    {
      "analyzer": "ik_smart",
      "text": "王者荣耀"
    }
    

    分词结果

    {
      "tokens": [
        {
          "token": "王者",
          "start_offset": 0,
          "end_offset": 2,
          "type": "CN_WORD",
          "position": 0
        },
        {
          "token": "荣耀",
          "start_offset": 2,
          "end_offset": 4,
          "type": "CN_WORD",
          "position": 1
        }
      ]
    }
    

    3.4 扩展字典

    (1)查看已有词典
    已有词典在ik文件夹下的config下


    171159280704hik.png

    自定义词典:
    linux环境下:

    [es@node1 analysis-ik]$ mkdir custom
    [es@node1 analysis-ik]$ vi custom/new_word.dic
    [es@node1 analysis-ik]$ cat custom/new_word.dic 
    老铁
    王者荣耀
    洪荒之力
    共有产权房
    一带一路
    [es@node1 analysis-ik]$ 
    

    在windows环境下只需要在对应文件夹下创建对应字典文件(xxxx.dic)即可
    (3)更新配置

    [es@node1 analysis-ik]$ vi IKAnalyzer.cfg.xml 
    [es@node1 analysis-ik]$ cat IKAnalyzer.cfg.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">custom/new_word.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    [es@node1 analysis-ik]$
    

    (4)重启elasticsearch
    (5)重启Kibana
    重启Kibana后,从新执行下面命令:

    GET _analyze?pretty
    {
      "analyzer": "ik_smart",
      "text":"王者荣耀"
    }
    

    分词结果

    {
      "tokens": [
        {
          "token": "王者荣耀",
          "start_offset": 0,
          "end_offset": 4,
          "type": "CN_WORD",
          "position": 0
        }
      ]
    }
    

    相关文章

      网友评论

          本文标题:ElasticSearch学习笔记3--IK分词器插件

          本文链接:https://www.haomeiwen.com/subject/gqfawftx.html