es安装IK中文分词器

没有中文分词器,我们使用es的时候会觉得乐趣少了很多,同时在业务中也有很多不方便的地方,es中对于字符串的默认内置分词是standard类型的,但是这对于中文来说就无能为力了,下面简单介绍一下es中怎么安装IK分词器插件;

1、首先我们需要获取IK分词器的zip包,获取包的步骤如下,
(1)git clone https://github.com/medcl/elasticsearch-analysis-ik
(2)git checkout tags/v6.2.2
(3)mvn package

或者直接去git上下载zip包,然后本地在使用mvn命令打个包即可,
es安装IK中文分词器_第1张图片
进入解压后的包中看一下,主目录下包含一些插件依赖的外部jar包和一个config文件,
es安装IK中文分词器_第2张图片

config文件里面的内容是分词器分词时读取文件的主要目录,我们大概说说里面的各文件内容,

  • IKAnalyzer.cfg.xml:用来配置自定义词库
  • main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起
  • quantifier.dic:放了一些单位相关的词
  • suffix.dic:放了一些后缀
  • surname.dic:中国的姓氏
  • stopword.dic:英文停用词

ik原生最重要的两个配置文件

main.dic:包含了原生的中文词语,会按照这个里面的词语去分词
stopword.dic:包含了英文的停用词

2、上传打完包的zip文件到linux对应的es的plugins目录下,
在这里插入图片描述
解压,unzip elasticsearch-analysis-ik-6.2.2.zip
注意,在解压完成后必须删除下载后的压缩包,否则重启es服务时会报错,无法正常加载

3、重新启动es,启动成功后,下面我们来做个简单的实验验证一下,

假如我们直接使用standard进行分词,我们使用它对中文进行分词看看有什么效果,执行如下语句,

PUT /my_index 
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "text",
          "analyzer": "standard"
        }
      }
    }
  }
}

然后我们测试对中文分词,很明显,被分成了一个个单一的词,很明显这并不是我们想要的效果,因为单个词汇在文档搜索中意义并不大,
es安装IK中文分词器_第3张图片

安装了中文分词器后,我们再来做如下设置,

PUT /my_index 
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "text",
          "analyzer": "ik_max_word"
        }
      }
    }
  }
}

再来测试一下中文分词效果,这时候IK分词器将我们的一段句子拆分成了不同长度的词汇,看起来合理多了,
es安装IK中文分词器_第4张图片

4、最后我们再为该索引添加一些文档内容,测试一下检索内容,先批量插入几条数据,

POST /my_index/my_type/_bulk
{ "index": { "_id": "1"} }
{ "text": "男子偷上万元发红包求交女友 被抓获时仍然单身" }
{ "index": { "_id": "2"} }
{ "text": "16岁少女为结婚“变”22岁 7年后想离婚被法院拒绝" }
{ "index": { "_id": "3"} }
{ "text": "深圳女孩骑车逆行撞奔驰 遭索赔被吓哭(图)" }
{ "index": { "_id": "4"} }
{ "text": "女人对护肤品比对男票好?网友神怼" }
{ "index": { "_id": "5"} }
{ "text": "为什么国内的街道招牌用的都是红黄配?" }

5、使用“女人”进行搜索,看一下结果,可以看到成功匹配到一条结果,达到了预期效果
es安装IK中文分词器_第5张图片

以上便是本篇内容,希望对看到的小伙伴有用,最后,感谢观看!

附上本文的IK分词器安装包,有需要的可以自行前往下载,
https://download.csdn.net/download/zhangcongyi420/11432423

你可能感兴趣的:(ElasticSearch,ES服务器)