es 使用ik停词_es 中文分词器详解(安装、使用、自定义词典等)

本文详细介绍了如何在Elasticsearch中安装和使用elasticsearch-analysis-ik插件,包括安装过程、使用方法以及如何配置自定义词典。通过设置analyzer和search_analyzer,可以实现全切词索引和智能分词搜索,同时提供了检查分词结果的API示例。
摘要由CSDN通过智能技术生成

elasticsearch 默认提供的分词器 standard 对中文分词不优化,效果差,一般会安装第三方中文分词插件,通常首先 elasticsearch-analysis-ik 插件,它其实是 ik 针对的 es 的定制版。本文主要围绕 es ik 的安装及使用进行讲解。

elasticsearch-analysis-ik 安装

在安装 elasticsearch-analysis-ik 第三方之前,我们首先要了解 es 的插件管理工具 elasticsearch-plugin 的使用。

elasticsearch-plugin 使用

现在的 elasticsearch 安装完后,在安装目录的 bin 目录下会存在 elasticsearch-plugin 命令工具,用它来对 es 插件进行管理。

bin/elasticsearch-plugin

其实该命令的是软连接,原始路径是:

libexec/bin/elasticsearch-plugin

再进一步看脚本代码,你会发现,它是通过 elasticsearch-cli 执行 libexec/lib/tools/plugin-cli/elasticsearch-plugin-cli-x.x.x.jar。

但一般使用者了解 elasticsearch-plugin 命令使用就可:

# 安装指定的插件到当前 ES 节点中

elasticsearch-plugin install {plugin_url}

# 显示当前 ES 节点已经安装的插件列表

elasticsearch-plugin list

# 删除已安装的插件

elasticsearch-plugin remove {plugin_name}

在安装插件时,要保证安装的插件与 ES 版本一致。

elasticsearch-analysis-ik 安装

在确定要安装的 ik 版本之后,执行如下命令:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v{X.X.X}/elasticsearch-analysis-ik-{X.X.X}.zip

其中,{X.X.X} 表示指定的 ik 版本,如上这是远程安装方式,如果网络不好,也可以提前下载包之后,本地安装。

Linux 下本地安装命令示例如下:

./bin/elasticsearch-plugin install file:///home/knowledgedict/elasticsearch-analysis-ik-X.X.X.zip

Windows 下本地安装命令示例如下:

./bin/elasticsearch-plugin install file:///C:/home/knowledgedict/elasticsearch-analysis-ik-X.X.X.zip

执行完安装命令后,我们会发现在 plugins 中多了 analysis-ik 目录,这里面主要存放的是源码 jar 包,此外,在 config 文件里也多了 analysis-ik 目录,里面主要是 ik 相关的配置,如 IKAnalyzer.cfg.xml 配置、词典文件等。

# 两个新增目录路径

libexec/plugins/analysis-ik/

libexec/config/analysis-ik/

elasticsearch-analysis-ik 使用

ES 5.X 版本开始安装完的 elasticsearch-analysis-ik 提供了两个分词器,分别对应名称是 ik_max_word 和 ik_smart,ik_max_word 是索引侧的分词器,走全切模式,ik_smart 是搜索侧的分词器,走智能分词,属于搜索模式。

索引 mapping 设置

安装完 elasticsearch-analysis-ik 后,我们可以指定索引及指定字段设置可用的分析器(analyzer),示例如下:

{

"qa": {

"mappings": {

"qa": {

"_all": {

"enabled": false

},

"properties": {

"question": {

"type": "text",

"store": true,

"similarity": "BM25",

"analyzer": "ik_max_word",

"search_analyzer": "ik_smart"

},

"answer": {

"type": "text",

"store": false,

"similarity": "BM25",

"analyzer": "ik_max_word",

"search_analyzer": "ik_smart"

},

...

}

}

}

}

}

如上示例中,analyzer 指定 ik_max_word,即索引侧使用 ik 全切模式,search_analyzer 设置 ik_smart,即搜索侧使用 ik 智能分词模式。

查看 ik 分词结果

es 提供了查看分词结果的 api _analyze,具体示例如下:

GET {index}/_analyze

{

"analyzer" : "ik_smart",

"text" : "es 中文分词器安装"

}

输出如下:

{

"tokens": [

{

"token": "es",

"start_offset": 0,

"end_offset": 2,

"type": "CN_WORD",

"position": 0

},

{

"token": "中文",

"start_offset": 3,

"end_offset": 5,

"type": "CN_WORD",

"position": 1

},

{

"token": "分词器",

"start_offset": 5,

"end_offset": 8,

"type": "CN_WORD",

"position": 2

},

{

"token": "安装",

"start_offset": 8,

"end_offset": 10,

"type": "CN_WORD",

"position": 3

}

]

}

elasticsearch-analysis-ik 自定义词典

elasticsearch-analysis-ik 本质是 ik 分词器,使用者根据实际需求可以扩展自定义的词典,具体主要分为如下 2 大类,每类又分为本地配置和远程配置 2 种:

自定义扩展词典;

自定义扩展停用词典;

elasticsearch-analysis-ik 配置文件为 IKAnalyzer.cfg.xml,它位于 libexec/config/analysis-ik 目录下,具体配置结构如下:

IK Analyzer 扩展配置

当然,如果开发者认为 ik 默认的词表有问题,也可以进行调整,文件都在  libexec/config/analysis-ik 下,如 main.dic 为主词典,stopword.dic 为停用词表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值