项目简介
本项目是一个基于Elasticsearch和IK分词器的中文搜索引擎,可提供高效、准确的中文文本分词和搜索功能。集成IK分词器后,支持自定义词典、热更新分词、智能分词和最大分词模式,能满足不同场景下的中文分词需求。
项目的主要特性和功能
- 支持用户自定义词典,可根据业务需求添加或删除词汇。
- 具备热更新分词功能,无需重启Elasticsearch即可更新分词词典。
- 提供
ik_smart
和ik_max_word
两种分词模式,适用于不同分词需求。 - 支持多个Elasticsearch版本,从0.16.2到6.x版本。
- 通过IK分词器,能高效地将中文文本分割成有意义的词汇单元,提升搜索准确性。
安装使用步骤
安装
- 下载或编译插件:
- 可选2:使用Elasticsearch插件管理器安装(支持从v5.5.1版本开始):
bash
注意:请将6.3.0
替换为你的Elasticsearch版本。 - 重启Elasticsearch:安装完成后,重启Elasticsearch以使插件生效。
使用
- 创建索引:
bash curl -XPUT http://localhost:9200/index
- 创建映射:
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" } } }'
- 索引文档:
bash curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d' {"content":"美国留给伊拉克的是个烂摊子吗"} '
- 查询文档:
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.xml
。
xml
<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-Modified
和ETag
头部,内容格式为每行一个分词,换行符使用\n
。
常见问题
- 自定义词典未生效:请确保扩展词典的文本格式为UTF8编码。
- 手动安装:可以通过以下步骤手动安装插件:
bash cd elasticsearch-analysis-ik git checkout tags/{version} mvn clean mvn compile mvn package
拷贝和解压release下的文件到Elasticsearch插件目录,如plugins/ik
,然后重启Elasticsearch。 - 分词测试失败:请在某个索引下调用analyze接口测试,而不是直接调用analyze接口。
ik_max_word
和ik_smart
的区别:ik_max_word
:会将文本做最细粒度的拆分,穷尽各种可能的组合。ik_smart
:会做最粗粒度的拆分,适用于需要更粗粒度分词的场景。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】