在Elasticsearch 7.3中使用IK Analyzer作为中文分词器并自定义词库的过程包括以下几个步骤:
安装IK Analyzer插件
首先,你需要在Elasticsearch集群中安装IK Analyzer插件。可以通过以下命令安装(假设你已经在Elasticsearch的bin目录下):
# 对于 Elasticsearch 7.x 版本
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip
配置IK Analyzer
-
配置自定义词库:
- 找到IK Analyzer插件的配置目录,通常位于
plugins/ik/config
路径下。 - 在该目录下有一个
IKAnalyzer.cfg.xml
文件,编辑此文件以指定自定义词典的位置。例如,如果你在custom
目录下创建了一个名为my_dict.dic
的词典文件,则需要在配置文件中添加如下内容:
<wordDictionary>plugins/ik/config/custom/my_dict.dic</wordDictionary>
- 找到IK Analyzer插件的配置目录,通常位于
-
添加自定义词库:
- 在上述提到的
custom
目录下创建或放置自定义词典文件,每行一个词语。
- 在上述提到的
-
重启Elasticsearch:
- 完成词典配置后,需要重启Elasticsearch使新词典生效。在Linux系统中可以使用
kill
命令结束Elasticsearch进程并重新启动;在Windows系统中,可以通过关闭命令行窗口并重新运行.bat
启动脚本来完成重启。
- 完成词典配置后,需要重启Elasticsearch使新词典生效。在Linux系统中可以使用
测试分词效果
你可以使用Elasticsearch的_analyze
API来测试IK Analyzer是否成功加载自定义词库并正确分词:
GET /_analyze
{
"analyzer": "ik_max_word", // 或 ik_smart
"text": "这里是我自定义的词汇"
}
应用自定义分词器至索引
如果想在特定索引中使用IK Analyzer作为默认或特定字段的分词器,你需要在索引映射中指定:
PUT my_index
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_ik_analyzer": {
"type": "ik_max_word",
"stopwords": "_chinese_", // 可选,使用停用词表
"use_smart": true/false // 根据需求启用或禁用智能分词模式
}
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"content": {
"type": "text",
"analyzer": "my_ik_analyzer" // 在“content”字段上应用自定义IK分词器
}
}
}
}
}
这样,当索引文档中的content
字段时,IK Analyzer会使用自定义词库进行分词。并且,新扩充的词典仅对扩展后新增加的索引数据有效,对于历史索引数据则需要重新索引才能应用新词典的分词效果。