美文网首页
Elasticsearch的分词

Elasticsearch的分词

作者: Qihang | 来源:发表于2021-10-14 09:56 被阅读0次

ES在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。处理中文分词,一般会使用IK分词器

ik分词器安装

  1. 点击下载
  2. 进入elasticsearch-7.15.0\plugins目录,新建ik文件夹,把下载文件解压进去
  3. 重启ES

重启时遇到ik和ES版本不一致的错误:

Plugin [analysis-ik] was built for Elasticsearch version 7.14.2 but version 7.15.0 is running

修改ik分词器的默认ES版本
打开elasticsearch-7.15.0\plugins\ik\plugin-descriptor.properties文件

修改成es对应的版本
elasticsearch.version=7.15.0

ik分词器包含两种模式

  • ik_smart:最少切分,粗粒度
  • ik_max_word:最细切分,细粒度
POST /_analyze
{
  "analyzer": "ik_smart",
  "text": "我是中国人"
}

使用ik_samrt分词,中国人划分为一个分词

{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "中国人",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

ik分词拓展

要拓展ik分词器的词库,只需要修改一个ik分词器目录中的config目录中的IkAnalyzer.cfg.xml文件:

<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic</entry>

elasticsearch-7.15.0\plugins\ik\config目录

  1. 新增ext.dic加入分词内容
    例如:豪弘集团
  2. 新增stopword.dic加入过滤分词
    例如:视察
  3. 重启ES
    请求
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "视察豪弘集团"
}

加入分词后的响应

{
  "tokens" : [
    {
      "token" : "豪弘集团",
      "start_offset" : 5,
      "end_offset" : 9,
      "type" : "CN_WORD",
      "position" : 3
    }
  ]
}

当我们添加了扩展分词,豪弘集团,变成了一个分词;视察没了

相关文章

网友评论

      本文标题:Elasticsearch的分词

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