Windows ElasticSearch中文分词配置

Posted 八戒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows ElasticSearch中文分词配置相关的知识,希望对你有一定的参考价值。

elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍ik的用法,

当我们创建一个index(库db_news)时,easticsearch默认提供的分词器db_news,分词结果会把每个汉字分开,而不是我们想要的根据关键词来分词。例如:

代码如下:

技术分享技术分享

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

 安装ik插件

直接下载elasticsearch中文发行版。下载地址是:https://github.com/medcl/elasticsearch-rtf重新运行安装elasticsearch实例

技术分享

只解压缩plugins文件夹里面的内容到plugins目录里面

技术分享

技术分享

重新启动ElasticSearch

技术分享

安装完毕,执行命令:

技术分享

关于分词器定义需要注意的地方

如果我们直接创建索引库,会使用默认的分词进行分词,这不是我们想要的结果。这个时候我们再去更改分词器会报错如下:

{ "error": "IndexAlreadyExistsException[[db_news] already exists]", "status": 400 }
GET /db_news/_mapping

技术分享

而且没有办法解决冲突,唯一的办法是删除已经存在的索引,新建一个索引,并制定mapping使用新的分词器(注意要在数据插入之前,否则会使用elasticsearch默认的分词器)。

删除索引命令如下:

DELETE /db_news

技术分享

 

转:http://eggtwo.com/news/detail/146

IK:https://github.com/medcl/elasticsearch-analysis-ik

以上是关于Windows ElasticSearch中文分词配置的主要内容,如果未能解决你的问题,请参考以下文章

在 Elasticsearch 中搜索两个字段但只得分一次

Windows ElasticSearch中文分词配置

如何使用 Elasticsearch 的 NEST“.net 客户端”对所有记录进行分页?

Elasticsearch聚合后将聚合结果进行分页的解决办法

Elasticsearch所有可用 Qbox 插件的概述:第二部分

浅析Elasticsearch大数据下深度分页问题