Elasticsearch实现中文分词

教程目录

0x00 教程内容
  1. 默认标准分词效果展示
  2. 分词插件elasticsearch-analysis-ik
  3. ik分词效果展示
0x01 默认标准分词效果展示
1. 默认标准分词器的使用

a. 英文分词效果展示
http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=I am teacher SHAO
Elasticsearch实现中文分词
点击提交请求后,可看到右边有分词效果:
Elasticsearch实现中文分词

b. 中文分词效果展示
http://localhost:9200/_analyze?analyzer=standard&pretty=true&text=邵奈一老师
Elasticsearch实现中文分词
可看到,老师都被分开了,对于中文效果并不理想

2. 新建一个测试索引

a. 索引名:shaonaiyi,类型:teacher
http://localhost:9200/shaonaiyi

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

Elasticsearch实现中文分词
b. 插入数据
http://localhost:9200/shaonaiyi/teacher

{
	"value":"学大数据"
}

Elasticsearch实现中文分词
类似插入多两条,如下面:

{
	"value":"大学讲师"
}
{
	"value":"学习技能"
}
3. 查询及效果展示

a. 查询【POST】
http://localhost:9200/shaonaiyi/teacher/_search/

{
	"query": {
		"match": {
			"value": "大学"
		}
	}
}

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

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

a. github.com
Elasticsearch实现中文分词
Elasticsearch实现中文分词
b. 翻页,找到自己对应的Elasticsearch版本(如:5.6.1)
Elasticsearch实现中文分词
c. 点击下载并解压到Elasticsearch主目录的plugins目录下(如:E:\SmallTools\elasticsearch-5.6.1\plugins\elasticsearch)
Elasticsearch实现中文分词

2. 启动Elasticsearch

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

3. 重新创建测试索引

a. 删除之前的shaonaiyi索引【DELETE】
http://localhost:9200/shaonaiyi
Elasticsearch实现中文分词
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"
        }
      }
    }
  }
}

Elasticsearch实现中文分词

0x03 ik分词效果展示
1. ik_max_word分词

a. 查询【POST】
http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=邵奈一老师
Elasticsearch实现中文分词

2. ik_smart分词

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

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

作者简介:邵奈一

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

公众号、微博、CSDN邵奈一

本系列课均为本人:邵奈一原创,如转载请标明出处

上一篇:ElasticSearch-ik分词器


下一篇:PHP中使用ElasticSearch