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

2018-09-05  本文已影响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
    }
  ]
}
上一篇下一篇

猜你喜欢

热点阅读