文档章节

Elasticsearch安装使用ik中文分词

北有风雪
 北有风雪
发布于 2017/02/16 13:54
字数 621
阅读 3
收藏 0

序言

Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词。例如:

curl -XPOST  "http://localhost:9200/test/_analyze?analyzer=standard&pretty=true&text=我是中国人" 

我们会得到这样的结果:

{ tokens: [ { token: text start_offset: 2 end_offset: 6 type: <ALPHANUM> position: 1 },
        { token: 我 start_offset: 9 end_offset: 10 type: <IDEOGRAPHIC> position: 2 },
        { token: 是 start_offset: 10 end_offset: 11 type: <IDEOGRAPHIC> position: 3 },
        { token: 中 start_offset: 11 end_offset: 12 type: <IDEOGRAPHIC> position: 4 },
        { token: 国 start_offset: 12 end_offset: 13 type: <IDEOGRAPHIC> position: 5 },
        { token: 人 start_offset: 13 end_offset: 14 type: <IDEOGRAPHIC> position: 6 }  
    ]  
}  

正常情况下,这不是我们想要的结果,比如我们更希望 “中国人”,“中国”,“我”这样的分词,这样我们就需要安装中文分词插件,ik就是实现这个功能的。

安装

elasticsearch-analysis-ik 是一款中文的分词插件,支持自定义词库。
安装步骤:

  1. 到github网站下载源代码,网站地址为:https://github.com/medcl/elasticsearch-analysis-ik
    master为最新版本,tag可以选择已经release的版本。
    右侧下方有一个按钮“Download ZIP”,点击下载源代码elasticsearch-analysis-ik-master.zip。
  2. 解压文件elasticsearch-analysis-ik-master.zip,进入下载目录,执行命令:
    unzip elasticsearch-analysis-ik-master.zip
  3. 将解压目录文件中config/ik文件夹复制到ES安装目录config文件夹下。
  4. 因为是源代码,此处需要使用maven打包,进入解压文件夹中,执行命令:
    mvn clean package
  5. 将打包得到的jar文件elasticsearch-analysis-ik-1.2.8-sources.jar复制到ES安装目录的lib目录下。
  6. 在ES的配置文件config/elasticsearch.yml中增加ik的配置,在最后增加:
index:  
  analysis:  
    analyzer:  
      ik:  
          alias: [ik_analyzer] 
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider 
      ik_max_word:  
          type: ik 
          use_smart: false 
      ik_smart:  
          type: ik 
          use_smart: true 

index.analysis.analyzer.ik.type : "ik"
7. 重新启动elasticsearch服务,这样就完成配置了,收入命令:
curl -XPOST "http://localhost:9200/test/_analyze?analyzer=ik&pretty=true&text=我是中国人"
测试结果如下:

{ tokens: [ { token: text start_offset: 2 end_offset: 6 type: ENGLISH position: 1 },
        { token: 我 start_offset: 9 end_offset: 10 type: CN_CHAR position: 2 },
        { token: 中国人 start_offset: 11 end_offset: 14 type: CN_WORD position: 3 },
        { token: 中国 start_offset: 11 end_offset: 13 type: CN_WORD position: 4 },
        { token: 国人 start_offset: 12 end_offset: 14 type: CN_WORD position: 5 }  
    ]  
}  

说明:

  1. ES安装插件本来使用使用命令plugin来完成,但是我本机安装ik时一直不成功,所以就使用源代码打包安装了。
  2. 自定义词库的方式,请参考 https://github.com/medcl/elasticsearch-analysis-ik

note:

target是jar的输出目录,release目录是ik的jar包和依赖包的输出目录,如果没有引入ik的依赖包会导致出现:
nested: NoClassDefFoundError[org/apache/http/client/ClientProtocolException]
错误

© 著作权归作者所有

北有风雪
粉丝 7
博文 33
码字总数 55091
作品 2
崇明
程序员
私信 提问
Elasticsearch 安装和配置

安装 elasticsearch 上传 elasticsearch-1.7.3.tar.gz 到 Linux环境 解压缩至 /usr/local 目录,并启动 elasticsearch 启动 elasticsearch 浏览器访问 http://192.168.81.132:9200/ ,出现如下......

o135248
2018/04/16
0
0
Elasticsearch中文分词研究

一、ES分析器简介 ES是一个实时搜索与数据分析引擎,为了完成搜索功能,必须对原始数据进行分析、拆解,以建立索引,从而实现搜索功能; ES对数据分析、拆解过程如下: 首先,将一块文本分成...

zhaipengfei1231
2018/04/18
0
0
Elasticsearch 6.5.4集群安装IK中文分词插件

中文分词就是将一句话的语义,分成一个个的词,之所以要分词是因为需要保证搜索的准确度。Elaticsearch默认对于英文分词的支持较好,毕竟是老外开发的,并且英文本身的语言特性也利于分词,只...

北极南哥
01/02
0
0
ElasticSearch IK分词器安装

Elasticsearch 默认是带分词器了,对英文是按固定的英文的空格,或者“-”进行分词,但是对中文分词是一个一个字进行分词。 分词测试地址: http://localhost:9200/analyze?analyzer=standar...

zchuanzhao
2018/07/10
55
0
Elasticsearch安装IK中文分词插件

一,从github上下载最新的Ik分词源码到本地 git clone https://github.com/medcl/elasticsearch-analysis-ik clone到本地后,将elasticsearch-analysis-ik目录中的 config/ik/ 整个目录拷贝到...

shensuoyao
2015/07/22
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
今天
58
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
今天
27
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
今天
61
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
今天
57
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
今天
50
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部