littlebot
Published on 2025-04-12 / 3 Visits
0

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

项目简介

本项目是基于Elasticsearch的IK中文分词器插件,为Elasticsearch赋予强大的中文分词功能。IK分词器是基于词典的中文分词工具,能将中文文本高效切分为有意义的词汇单元。该插件支持自定义词典和热更新功能,适用于各类中文文本分析场景。

项目的主要特性和功能

  • 自定义词典:支持用户自定义扩展词典和停止词词典,可灵活适应不同业务需求。
  • 热更新功能:支持远程词典热更新,无需重启Elasticsearch就能动态更新词库。
  • 多种分词模式:提供ik_smart(智能分词)和ik_max_word(最大词分词)两种模式,满足不同粒度的分词需求。
  • Elasticsearch集成:能无缝集成到Elasticsearch中,提供高效的中文文本分析能力。

安装使用步骤

1. 下载并安装插件

方法一:下载预构建包

  • 创建插件目录: bash cd your-es-root/plugins/ && mkdir ik
  • 解压插件包到指定目录: bash unzip elasticsearch-analysis-ik-*.zip -d your-es-root/plugins/ik

方法二:使用Elasticsearch插件管理工具

  • 使用Elasticsearch插件管理工具安装插件: bash 注意:请根据实际的Elasticsearch版本替换6.3.0
  • 重启Elasticsearch服务。

2. 配置和使用

创建索引和映射

  • 创建一个索引: bash curl -XPUT http://localhost:9200/index
  • 创建映射,指定使用IK分词器: 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" } } }'

索引文档

  • 索引一些示例文档: bash curl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/json' -d' {"content":"美国留给伊拉克的是个烂摊子吗"} '
  • 查询文档并高亮显示: 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" : {} } } } '

3. 自定义词典配置

  • 在Elasticsearch配置目录中创建或编辑IKAnalyzer.cfg.xml文件: ```xml

IK Analyzer 扩展配置 custom/mydict.dic;custom/single_word_low_freq.dic custom/ext_stopword.dic location http://xxx.com/xxx.dic `` - 配置远程词典的热更新功能,确保HTTP请求返回Last-ModifiedETag`头部,内容格式为每行一个分词。

4. 常见问题

  • 自定义词典未生效:请确保扩展词典的文本格式为UTF8编码。
  • 分词测试失败:请在某个索引下调用analyze接口测试,而不是直接调用analyze接口。
  • ik_max_wordik_smart的区别:ik_max_word会将文本做最细粒度的拆分,适合Term Query;ik_smart会做最粗粒度的拆分,适合Phrase查询。

下载地址

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