项目简介
IK中文分词器是一个集成在Elasticsearch中的中文分词插件,它基于Lucene IK Analyzer,支持自定义词典和热更新功能。该插件能够将中文文本高效地切分为单个词语,适用于中文搜索和索引场景。
项目的主要特性和功能
- 自定义词典:支持用户自定义扩展词典和停用词词典,满足特定业务需求。
- 热更新功能:支持从远程服务器或MySQL数据库中动态加载和更新词典,无需重启Elasticsearch实例。
- 多种分词模式:提供
ik_smart
和ik_max_word
两种分词模式,分别适用于粗粒度和细粒度的分词需求。 - 多版本兼容:支持多个Elasticsearch版本,从0.16.2到最新版本。
- 高效分词:采用词典树结构和多线程技术,确保分词效率和准确性。
安装使用步骤
1. 下载和安装
- 方法一:手动安装
- 创建插件目录:
cd your-es-root/plugins/ && mkdir ik
- 解压插件到目录:
your-es-root/plugins/ik
- 方法二:使用Elasticsearch插件管理工具安装
bash
注意:替换6.3.0
为你的Elasticsearch版本。
2. 重启Elasticsearch
安装完成后,重启Elasticsearch实例以加载插件。
3. 创建索引和映射
bash
curl -XPUT http://localhost:9200/index
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"
}
}
}'
4. 索引文档
bash
curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
5. 查询文档
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" : {}
}
}
}'
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. 热更新词典
通过配置远程词典路径,实现词典的热更新:
xml
<entry key="remote_ext_dict">http://yoursite.com/getCustomDict</entry>
<entry key="remote_ext_stopwords">http://yoursite.com/getCustomStopwordDict</entry>
确保HTTP请求返回Last-Modified
和ETag
头部,内容为一行一个分词。
常见问题
- 自定义词典未生效:确保词典文件为UTF8编码。
- 分词测试失败:在索引下调用
analyze
接口进行测试。 ik_max_word
和ik_smart
的区别:ik_max_word
进行最细粒度拆分,ik_smart
进行最粗粒度拆分。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】