ES笔记:IK分词器

ES中文档按照分词进行检索,对于中文,ES默认按照单个字进行分词,非常低效,可以使用专门的中文分词器,如IK分词器。

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

安装: 在ES的plugins目录下新建一个目录,将下载的IK分词压缩包解压到此目录即可,然后重启ES该分词器便会生效。

IK分词器提供了两种分词算法:ik_smart(最少切分)和ik_max_word(细粒度切分)。这两种分词算法都会根据默认的“词典”进行切分,所有的“词典”配置文件都在config目录下的dic文件中。

如果想要添加自定义的词典,可以在config目录下新建自己的dic文件,如 my.dic ,然后将该文件配置在 IKAnalyzer.cfg.xml 中的ext_dict节点,如 <entry key="ext_dict">my.dic</entry> ,然后重启ES即可。

ik_smart示例:切分结果只是切分了一次

GET _analyze
{
  "analyzer": "ik_smart",  # 指定分析器,默认的分析器是内置的standard分析器
  "text": "开发工具"
}

分词结果:

{
  "tokens" : [
    {
      "token" : "开发工具",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 0
    }
  ]
}

ik_max_word示例:切分出更多结果

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "开发工具"
}

分词结果

{
  "tokens" : [
    {
      "token" : "开发工具",
      "start_offset" : 0,
      "end_offset" : 4,
      "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
    }
  ]
}
posted @ 2024-02-04 23:51  山上下了雪-bky  阅读(69)  评论(0编辑  收藏  举报