IK分词器插件

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

  • 分词︰即把一段中文或者别的划分成一个个的关键字,在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,

  • 默认的中文分词是将每个字看成一个词,比如”文档”会被分为”文””档”,这显然是不符合要求的,所以需要安装中文分词器ik来解决这个问题。

  • IK提供了两个分词算法:ik_smartik_max_word

    • ik_smart为最少切分
    • ik_max_word为最细粒度划分

安装

安装

下载后解压到 elasticsearch/plugins/ik/xxxxxxxx

docker安装ik分词器

  • TODO

使用

不使用

  • 不使用是将中文单个字进行拆开
GET _analyze
{
  "text": "中国共产党"
}

return:
{
  "tokens" : [
    {
      "token" : "中",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "国",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "共",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    },
    {
      "token" : "产",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "<IDEOGRAPHIC>",
      "position" : 3
    },
    {
      "token" : "党",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "<IDEOGRAPHIC>",
      "position" : 4
    }
  ]
}

使用ik_smart 最少切分

  • 不会有重复的数据拆分
GET _analyze
{
  "analyzer": "ik_smart",
  "text": "中国共产党"
}

return:
{
  "tokens": [
    {
      "token": "中国共产党",
      "start_offset": 0,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 0
    }
  ]
}

使用ik_max_word 最细粒度划分 穷尽词库的可能

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "中国共产党"
}

return:
{
  "tokens": [
    {
      "token": "中国共产党",
      "start_offset": 0,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 0
    },
    {
      "token": "中国",
      "start_offset": 0,
      "end_offset": 2,
      "type": "CN_WORD",
      "position": 1
    },
    {
      "token": "国共",
      "start_offset": 1,
      "end_offset": 3,
      "type": "CN_WORD",
      "position": 2
    },
    {
      "token": "共产党",
      "start_offset": 2,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 3
    },
    {
      "token": "共产",
      "start_offset": 2,
      "end_offset": 4,
      "type": "CN_WORD",
      "position": 4
    },
    {
      "token": "党",
      "start_offset": 4,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 5
    }
  ]
}

添加自己的词汇

  • elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml中配置自己的字典文件名称
  • 添加一个 xxx.dic 文件,将自己的词汇添加进去
文档更新时间: 2021-04-11 01:39   作者:sapluk