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

【源码】基于Elasticsearch和IK分词器的中文搜索引擎

项目简介

本项目是一个基于Elasticsearch和IK分词器的中文搜索引擎,可提供高效、准确的中文文本分词和搜索功能。集成IK分词器后,支持自定义词典、热更新分词、智能分词和最大分词模式,能满足不同场景下的中文分词需求。

项目的主要特性和功能

  1. 支持用户自定义词典,可根据业务需求添加或删除词汇。
  2. 具备热更新分词功能,无需重启Elasticsearch即可更新分词词典。
  3. 提供ik_smartik_max_word两种分词模式,适用于不同分词需求。
  4. 支持多个Elasticsearch版本,从0.16.2到6.x版本。
  5. 通过IK分词器,能高效地将中文文本分割成有意义的词汇单元,提升搜索准确性。

安装使用步骤

安装

  1. 下载或编译插件:
  2. 可选2:使用Elasticsearch插件管理器安装(支持从v5.5.1版本开始): bash 注意:请将6.3.0替换为你的Elasticsearch版本。
  3. 重启Elasticsearch:安装完成后,重启Elasticsearch以使插件生效。

使用

  1. 创建索引: bash curl -XPUT http://localhost:9200/index
  2. 创建映射: bash curl -XPOST http://localhost:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d' { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } }'
  3. 索引文档: bash curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d' {"content":"美国留给伊拉克的是个烂摊子吗"} '
  4. 查询文档: bash curl -XPOST http://localhost:9200/index/fulltext/_search -H 'Content-Type:application/json' -d' { "query" : { "match" : { "content" : "中国" }}, "highlight" : { "pre_tags" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } } }'

自定义词典配置

可以通过配置文件IKAnalyzer.cfg.xml来管理自定义词典和停用词。配置文件路径为{conf}/analysis-ik/config/IKAnalyzer.cfg.xml{plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xmlxml <properties> <comment>IK Analyzer 扩展配置</comment> <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> </properties>

热更新分词使用方法

通过配置远程扩展字典和停用词字典,可以实现热更新分词功能。配置示例如下: xml <entry key="remote_ext_dict">http://yoursite.com/getCustomDict</entry> <entry key="remote_ext_stopwords">http://yoursite.com/getCustomStopwords</entry> 确保HTTP请求返回Last-ModifiedETag头部,内容格式为每行一个分词,换行符使用\n

常见问题

  1. 自定义词典未生效:请确保扩展词典的文本格式为UTF8编码。
  2. 手动安装:可以通过以下步骤手动安装插件: bash cd elasticsearch-analysis-ik git checkout tags/{version} mvn clean mvn compile mvn package 拷贝和解压release下的文件到Elasticsearch插件目录,如plugins/ik,然后重启Elasticsearch。
  3. 分词测试失败:请在某个索引下调用analyze接口测试,而不是直接调用analyze接口。
  4. ik_max_wordik_smart的区别:
  5. ik_max_word:会将文本做最细粒度的拆分,穷尽各种可能的组合。
  6. ik_smart:会做最粗粒度的拆分,适用于需要更粗粒度分词的场景。

下载地址

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