littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于Elasticsearch的IK中文分词插件

项目简介

IK Analysis for Elasticsearch 是一个将 Lucene IK 分词器集成到 Elasticsearch 中的插件,支持自定义词典。该插件提供了 ik_smartik_max_word 两种分词模式,可满足不同的分词需求。

项目的主要特性和功能

  • 分词模式:支持 ik_smartik_max_word 两种模式。ik_smart 对文本进行粗粒度分词,适合短语查询;ik_max_word 对文本进行细粒度分词,适合精确匹配查询。
  • 自定义词典:支持用户通过配置文件或远程服务器加载自定义词汇。
  • 热更新:支持热更新词典,无需重启 Elasticsearch 实例即可更新。
  • 多版本支持:兼容从 0.16.2 到最新版本的多个 Elasticsearch 版本。

安装使用步骤

1. 下载或编译插件

  • 下载预构建包
  • 创建插件文件夹:cd your-es-root/plugins/ && mkdir ik
  • 解压插件到文件夹:your-es-root/plugins/ik
  • 使用 Elasticsearch 插件工具安装(适用于 v5.5.1 及以上版本): bash 注意:请将 6.3.0 替换为你的 Elasticsearch 版本。

2. 重启 Elasticsearch

安装完成后,重启 Elasticsearch 以加载插件。

3. 创建索引和映射

  • 创建索引bash curl -XPUT http://localhost:9200/index
  • 创建映射bash curl -XPOST http://localhost:9200/index/_mapping -H 'Content-Type:application/json' -d' { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }'

4. 索引文档

bash curl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/json' -d' {"content":"美国留给伊拉克的是个烂摊子吗"} '

5. 查询文档

bash curl -XPOST http://localhost:9200/index/_search -H 'Content-Type:application/json' -d' { "query" : { "match" : { "content" : "中国" }}, "highlight" : { "pre_tags" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } } }'

6. 自定义词典配置

可以通过配置文件 IKAnalyzer.cfg.xml 进行自定义词典配置,支持本地和远程词典。 xml <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry> <entry key="ext_stopwords">custom/ext_stopword.dic</entry> <entry key="remote_ext_dict">location</entry> <entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>

7. 热更新词典

通过配置远程词典 URL,可以实现词典的热更新,无需重启 Elasticsearch 实例。 xml <entry key="remote_ext_dict">http://yoursite.com/getCustomDict</entry> <entry key="remote_ext_stopwords">http://yoursite.com/getCustomStopword</entry>

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】