ES文档的数据拆分成一个个有完整含义的关键词,并将关键词与文档对应,这样就可以通过关键词查询文档。要想正确的分词,需要选择合适的分词器。
默认分词器
standard analyzer
:
Elasticsearch
默认分词器,根据空格和标点符号对英文进行分词,会进行单词的大小写转换。(默认分词器是英文分词器,对于中文的分词是一字一词)
GET /_analyze
{
"text":"I love SpringMVC",
"analyzer":"standard"
}
ik分词器
IKAnalyzer
是一个开源的,基于
java
语言开发的轻量级的中文分词工具包。
提供了两种分词算法
1. ik_smart 最少切分
2 . ik_max_word 最细粒度划分
GET /_analyze
{
"text":"明日复明日,明日何其多",
"analyzer":"ik_smart"
}
分词器_拼音分词器
拼音分词器可以将中文分成对应的全拼,全拼首字母等。
GET /_analyze
{
"text":"明日复明日,明日何其多",
"analyzer":"pinyin"
}
自定义分词器
真实开发中我们往往需要对一段内容既进行文字分词,又进行拼音分词,此时我们需要自定义ik+pinyin
分词器。
PUT /student3
{
"settings": {
"analysis": {
"analyzer": {
"ik_pinyin":{
"tokenizer":"ik_max_word",
"filter":"pinyin_filter"
}
},
"filter": {
"pinyin_filter":{
"type":"pinyin",
"keep_separate_first_letter": false,
"keep_full_pinyin": true,
"keep_original": true,
"remove_duplicated_term": true
}
}
}
},
"mappings": {
"properties": {
"name":{
"type": "text",
"store": true,
"index": true,
"analyzer": "ik_pinyin"
},
"phone":{
"type":"integer"
}
}
}
}
测试自定义分词器
GET /student3/_analyze
{
"text":"你好程序员",
"analyzer":"ik_pinyin"
}