Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装

由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsearch上使用。当然前提是有elasticsearch的插件。 至于插件怎么开发,这里有一片文章介绍:
http://log.medcl.net/item/2011/07/diving-into-elasticsearch-3-custom-analysis-plugin/
暂时还没时间看,留在以后仔细研究, 这里只记录本人使用medcl提供的IK分词插件的集成步骤。

安装步骤:

1、到github网站下载源代码,网站地址为:https://github.com/medcl/elasticsearch-analysis-ik

右侧下方有一个按钮“Download ZIP",点击下载源代码elasticsearch-analysis-ik-master.zip。

2、解压文件elasticsearch-analysis-ik-master.zip,进入下载目录,执行命令:

unzip elasticsearch-analysis-ik-master.zip  

3、因为是源代码,此处需要使用maven打包,进入解压文件夹中,执行命令:

mvn clean package

4、将打包后,得到的目录文件target/releases下的elasticsearch-analysis-ik-1.9.4.zip复制到ES安装目录的plugins/analysis-ik目录下。

5、在plugins/analysis-ik目录下解压elasticsearch-analysis-ik-1.9.4.zip

6、在ES的配置文件elasticsearch.yml中增加ik的配置,在最后增加:

index.analysis.analyzer.ik.type : “ik”  

7、重新启动elasticsearch服务,这样就完成配置了,收入命令:

curl -XPOST  "http://localhost:9200/userinfo/_analyze?analyzer=ik&pretty=true&text=helloworld,中华人民共和国"

  

测试结果如下:

{
  "tokens" : [ {
    "token" : "helloworld",
    "start_offset" : 0,
    "end_offset" : 10,
    "type" : "ENGLISH",
    "position" : 0
  }, {
    "token" : "中华人民共和国",
    "start_offset" : 11,
    "end_offset" : 18,
    "type" : "CN_WORD",
    "position" : 1
  }, {
    "token" : "中华人民",
    "start_offset" : 11,
    "end_offset" : 15,
    "type" : "CN_WORD",
    "position" : 2
  }, {
    "token" : "中华",
    "start_offset" : 11,
    "end_offset" : 13,
    "type" : "CN_WORD",
    "position" : 3
  }, {
    "token" : "华人",
    "start_offset" : 12,
    "end_offset" : 14,
    "type" : "CN_WORD",
    "position" : 4
  }, {
    "token" : "人民共和国",
    "start_offset" : 13,
    "end_offset" : 18,
    "type" : "CN_WORD",
    "position" : 5
  }, {
    "token" : "人民",
    "start_offset" : 13,
    "end_offset" : 15,
    "type" : "CN_WORD",
    "position" : 6
  }, {
    "token" : "共和国",
    "start_offset" : 15,
    "end_offset" : 18,
    "type" : "CN_WORD",
    "position" : 7
  }, {
    "token" : "共和",
    "start_offset" : 15,
    "end_offset" : 17,
    "type" : "CN_WORD",
    "position" : 8
  }, {
    "token" : "国",
    "start_offset" : 17,
    "end_offset" : 18,
    "type" : "CN_CHAR",
    "position" : 9
  } ]
}

注意点:

本人绕了很多弯路,网上很多都不行,总结:

一、maven一定要编译,因为elasticsearch和ik各个版本不同,对应编译生成的文件就不同,所以想引用elasticsearch-rtm包的朋友,一定要注意区分。

二、我是通过rpm安装elasticsearch,事实证明字典config目录,可以在plugins目录下,和插件unzip放在一起

参考资料:

elasticsearch中文分词

elasticsearch安装plugin----ik

ElasticSearch中文分词ik安装

Elasticsearch初步使用(安装、Head配置、分词器配置)

时间: 2024-10-08 10:04:04

Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装的相关文章

elasticsearch 中文分词(elasticsearch-analysis-ik)安装

下载最新的发布版本 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip 在elasticsearch的plugins目录下,创建ik目录 cd /usr/local/elasticsearch-6.3.0/plugins mkdir ik 将解压的内容,放入其中 重新启动elasticsearch服务 elasticsearc

Windows ElasticSearch中文分词配置

elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍ik的用法, 当我们创建一个index(库db_news)时,easticsearch默认提供的分词器db_news,分词结果会把每个汉字分开,而不是我们想要的根据关键词来分词.例如: 代码如下: 正常情况下,这不是我们想要的结果,比如我们更希望 “我”,“爱”,“北京”,"天安门"这样

elasticsearch中文分词(mmseg)——手动添加词典

elasticsearch本身的中文分词插件效果都不理想,手动添加词典可以在一定程度上进行弥补. 经过多次实验发现,mmseg的分词机制采用正向最长匹配算法,例如,针对"小时代"这个单词,其自带的词典中没有包含该词,故当用户搜索小时代时,检索不到任何结果. 在咸鱼老婆的虚心指导下,我终于找到了解决办法. 手动添加该词到mmseg的词库中,有两种方法: 1.将该词加入到自带的某个词典中(非停顿词词典),如words-my.dic. 2.新建一个自定义词典,将其放入默认词库文件夹下,注意编

ElasticSearch中文分词(IK)

ElasticSearch安装 官网:https://www.elastic.co 1.ElasticSearch安装 1.1.下载安装公共密钥 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 1.2.在 /etc/yum.repos.d/ 目录下建立 elasticsearch.repo 文件 vim /etc/yum.repos.d/elasticsearch.repo 在文件中写入: [elasticsearc

Elasticsearch 中文分词插件 jcseg 安装 (Ubuntu 14.04 下)

搜索可以说是开发中很常见的场景了,同样这次也一样... 之前的组合多数是选择 Mysql + Sphinx ,这次因为工作原因不再使用这种组合,虽然是老牌组合,但是确实限制诸多,而且每次配环境也是个问题,挺烦的...这次就尝试使用 Elasticsearch + Jcseg ,因为在文档检索方面 elasticsearch 做的相当不错,但是对中文环境来说就差一个很好的中文分词器,还好,国内好的中文分词器也有蛮多,但是我个人还是比较推荐 Jcseg . 好了,废话不多扯. 版本说明: elast

ElasticSearch中文分词器-IK分词器的使用

IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze { "text":"农业银行" } 得到如下结果,可以发现es的默认分词器无法识别中文中农业.银行这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求. { "tokens": [ { "token": "农", "start_offse

elasticsearch中文分词+全文搜索

安装ik中文分词器 我在百度上搜索了下,大多介绍的都是用maven打包下载下来的源码,这种方法也行,但是不够方便,为什么这么说? 首先需要安装maven吧?其次需要下载源码吧?最后需要打包吧? 我直接下载打包好的多方便? 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases 最上面elasticsearch-analysis-ik-5.5.1.zip就是打包好的,直接下载下来用就行了 下面两个都是源码包,需要用maven

Elasticsearch中文分词

分词api: 指定分词器进行分词 POST /_analyze { "analyzer": "standard", "text": "hello world" } 指定索引分词 POST /fan/_analyze { "analyzer": "standard", "field": "hobby", "text": "

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准