Elasticsearch中文分词器安装

Elasticsearch中,内置了很多分词器(analyzers),例如standard (标准分词器)、english (英文分词)和chinese (中文分词)。

分词的操作也称为“分析(analysis)”. analysis过程由两个步骤的操作组成:首先将文本切分为terms(词项)以适合构建倒排索引,其次将各terms正规化为标准形式以提升其“可搜索度”。这两个步骤由分词器完成。

一个分词器通常需要由三个组件构成:字符过滤器(character filters),分词器(tokenizer)和分词过滤器(token filters)组成。

字符过滤器:在文本被切割之前进行清理操作,例如移除HTML标签,将&替换为字符等。

分词器:将文本切分为独立的词项;简单的分词器通常是根据空白及标点符号进行切分。

分词过滤器:转换字符(如将大写转为小写)、移除词项(如移除a、an、of及the等)或者添加词项(例如,添加同义词)。

分词过滤流水线(图片来源于网络,侵删)

测试默认分词插件

http get http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=test分词测试

{
  "tokens" : [
    {
      "token" : "test",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "测",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "试",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    },
    {
      "token" : "中",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "<IDEOGRAPHIC>",
      "position" : 3
    },
    {
      "token" : "文",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "<IDEOGRAPHIC>",
      "position" : 4
    },
    {
      "token" : "分",
      "start_offset" : 8,
      "end_offset" : 9,
      "type" : "<IDEOGRAPHIC>",
      "position" : 5
    },
    {
      "token" : "词",
      "start_offset" : 9,
      "end_offset" : 10,
      "type" : "<IDEOGRAPHIC>",
      "position" : 6
    }
  ]
}

安装中文分词ik

下载

这里用的es版本是5.3.2,所以我下载的ik分词器也是对应的5.3.2版本,下载地址:https://github.com/medcl/elasticsearch-analysis-ik

编译安装

下载完成后切换到相应的5.3.2的tags:git checkout tags/v5.3.2

进入elasticsearch-analysis-ik文件夹内执行:mvn clean package命令打包编译。

执行完以上命令会生成一个target文件夹,将target/releases文件夹内的elasticsearch-analysis-ik-5.3.2.zipcopy到es的plugins文件夹内,解压后修改文件夹名称为analysis-ik:elasticsearch-5.3.2\plugins\analysis-ik。

analysis-ik|
-commons-codec-1.9.jar
-commons-logging-1.2.jar
-elasticsearch-analysis-ik-5.3.2.jar
-httpclient-4.5.2.jar
-httpcore-4.4.4.jar
-plugin-descriptor.properties
-config|
--IKAnalyzer.cfg.xml
--...
--custom|
---...

启动测试

启动es:./elasticsearch-5.3.2/bin/elasticsearch.bat
当我们看到启动控制台打印出

[2017-05-17T14:16:10,252][INFO ][o.e.p.PluginsService     ] [XCwou8Z] loaded plugin [analysis-ik]

时就表示ik插件安装成功了。

测试一下:http + get http://localhost:9200/_analyze?analyzer=ik_smart&pretty=true&text=test分词测试

{
  "tokens" : [
    {
      "token" : "test",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "ENGLISH",
      "position" : 0
    },
    {
      "token" : "分词",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "测试",
      "start_offset" : 6,
      "end_offset" : 8,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

http + get http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=test分词测试

{
  "tokens" : [
    {
      "token" : "test",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "ENGLISH",
      "position" : 0
    },
    {
      "token" : "分词",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "词",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "测试",
      "start_offset" : 6,
      "end_offset" : 8,
      "type" : "CN_WORD",
      "position" : 3
    }
  ]
}

以上两个测试结果的不同说明了:

1、ik_max_word:会将文本做最细粒度的拆分,比如将“test分词测试”拆分成“test”、“分词”、“词”、“测试”。

2、ik_smart:会做最粗粒度的拆分,比如将“test分词测试”拆分成“test”、“分词”、“测试”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值