Elasticsearch实现中文分词

Elasticsearch实现中文分词

邵奈一

教程目录
0x00 教程内容
0x01 默认标准分词效果展示
1. 默认标准分词器的使用
2. 新建一个测试索引
3. 查询及效果展示
0x02 分词插件elasticsearch-analysis-ik
1. 下载插件
2. 启动Elasticsearch
3. 重新创建测试索引
0x03 ik分词效果展示
1. ik_max_word分词
2. ik_smart分词
0xFF 总结
0x00 教程内容
默认标准分词效果展示
分词插件elasticsearch-analysis-ik
ik分词效果展示
0x01 默认标准分词效果展示
1. 默认标准分词器的使用
a. 英文分词效果展示
http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=I am teacher SHAO

点击提交请求后,可看到右边有分词效果:


b. 中文分词效果展示
http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=邵奈一老师

可看到,老师都被分开了,对于中文效果并不理想

2. 新建一个测试索引
a. 索引名:shaonaiyi,类型:teacher
http://localhost:9200/shaonaiyi

{
  "settings": {
    "number_of_replicas": 0
  },
  "mappings": {
    "teacher": {
      "dynamic": false,
      "properties": {
        "value": {
          "type": "text"
        }
      }
    }
  }
}

b. 插入数据
http://localhost:9200/shaonaiyi/teacher

{
    "value":"学大数据"
}
1
2
3

类似插入多两条,如下面:

{
    "value":"大学讲师"
}
1
2
3
{
    "value":"学习技能"
}
1
2
3
3. 查询及效果展示
a. 查询【POST】
http://localhost:9200/shaonaiyi/teacher/_search/

{
    "query": {
        "match": {
            "value": "大学"
        }
    }
}
1
2
3
4
5
6
7

b .结论
我们想要的结果只是:大学讲师,可是其他带“大”字和“学”字的结果都搜索出来了,这不是我们想要的结果。

0x02 分词插件elasticsearch-analysis-ik
1. 下载插件
a. github.com


b. 翻页,找到自己对应的Elasticsearch版本(如:5.6.1)

c. 点击下载并解压到Elasticsearch主目录的plugins目录下(如:E:\SmallTools\elasticsearch-5.6.1\plugins\elasticsearch)


2. 启动Elasticsearch
a. 关闭之前的elasticsearch.bat窗口(如没有启动则直接启动)
b. 打开elasticsearch.bat文件
c. 重启后刷新http://localhost:9100/,可看到前面创建的shaonaiyi索引,但需要重新创建索引,因为插件安装好了


3. 重新创建测试索引
a. 删除之前的shaonaiyi索引【DELETE】
http://localhost:9200/shaonaiyi

b. 创建索引【PUT】
http://localhost:9200/shaonaiyi

{
  "settings": {
    "number_of_replicas": 0
  },
  "mappings": {
    "teacher": {
      "dynamic": false,
      "properties": {
        "value": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}
 


0x03 ik分词效果展示
1. ik_max_word分词
a. 查询【POST】
http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=邵奈一老师


2. ik_smart分词
a. 将上面的三个均ik_max_word改为ik_smart
b. 创建一个新索引shaonaiyi888
c. 重新查询,比较不同

0xFF 总结
如没有Elasticsearch基础或者有疑惑,请参考此篇教程:Elasticsearch的安装(windows)
更多与ik分词插件相关知识请看github:medcl/elasticsearch-analysis-ik
看以后是否有需求和时间,再出一个模仿百度的简单搜索引擎。
作者简介:邵奈一

大学大数据讲师、大学市场洞察者、专栏编辑

公众号、微博、CSDN:邵奈一

本系列课均为本人:邵奈一原创,如转载请标明出处
————————————————
版权声明:本文为CSDN博主「邵奈一」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shaock2018/article/details/86621887

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值