ES分词器使用说明(analyzer)

简介: 本文章主要介绍了分词器的配置方法,以及分词器的优先级,同时配置了多个维度的分词器,哪一个分词器会生效,当出现分词结果不符合预期的时候,可以通过这个本文档内容进行梳理和排查。

一、分词

分词是对字符串进行切分,将一个字段的字符串切分成多个term进行匹配,内容是“我是中国人”,会被切分成 我/是/中国人。

二、分词器

分词器实际就是对字符串切分逻辑,不同分词器切分逻辑不一样,比如使用ik_max_word分词器,内容是“我是中国人”,会被切分成 我/是/中国人。

三、分词器使用阶段

分析器主要有两种情况会被使用,第一种是插入文档时,将text类型的字段做分词然后插入倒排索引,为了后面方便说明,我们称之为写入分词。第二种就是在查询时,先对要查询的text类型的输入字符串做分词,再去倒排索引搜索,我们称之为查询分词,根据搜索的term和写入时被切分存储的term进行匹配。


四、分词器优先级和配置方式

1.qeury维度

查询语句query中配置的ananlyzer

GET /test_analyzer/_search

{

 "query": {

   "match": {

     "content":{

       "query":"中国人",

       "analyzer": "standard"

     }

   }

 }

}


2.字段维度

a)mappings中设置的查询分词(search_analyzer)

PUT /test_analyzer

{

   "mappings": {

     "properties": {

       "content":{

         "type": "text",

         "search_analyzer": "ik_max_word"

       }

     }

   }

}


b)mappings中设置的写入分词(analyzer)

PUT /test_analysis_mappings

{

   "mappings": {

     "properties": {

       "content":{

         "type": "text",

         "analyzer": "ik_smart"

       }

     }

   }

}


3.索引维度

a)settings中设置的默认查询分词(default_search)

PUT /test_analysis_settings_testsss1

{

   "settings": {

     "analysis" : {

       "analyzer":{

         "default_search":{

           "tokenizer":"ik_smart"

         }

       }

     }

   },

   "mappings":{

     "properties":{

       "content":{

         "type":"text"

       }

     }

   }

}

b)settings中设置的默认写入分词(default)default analyzer

PUT /test_analysis_settings_testsss

{

   "settings": {

     "analysis" : {

       "analyzer":{

         "default":{

           "tokenizer":"ik_max_word"

         }

       }

     }

   },

   "mappings":{

     "properties":{

       "content":{

         "type":"text"

       }

     }

   }

}


4.集群维度

集群默认的分词器standard。

五、分词测试

1.测试分词器分词结果

GET _analyze

{

 "analyzer":"ik_max_word",

 "text":"湖北小白菜12kg一级"

}


2.测试索引的分词器分词结果

一般测试索引中定义的自定义分词器

GET /test_analysis_settings_test/_analyze

{

 "analyzer": "standard",

 "text":     "我是中国人"

}


3.测试索引字段写入分词结果

GET /test_analysis_settings_testsss1/_analyze

{

 "field": "content",

 "text":     "我是中国人"

}


4.测试索引字段查询分词结果

目前还没有测试接口。

相关文章
|
5月前
|
自然语言处理 索引
ES 分词器简单应用
ES 分词器简单应用
225 0
|
6月前
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
569 1
|
6月前
|
自然语言处理 数据可视化 Linux
ElasticSearch安装ik分词器_使用_自定义词典
ElasticSearch安装ik分词器_使用_自定义词典
69 1
|
7月前
|
自然语言处理
Elasticsearch+IK+pinyin自定义分词器
Elasticsearch+IK+pinyin自定义分词器
87 0
|
自然语言处理 Shell 索引
【ES系列七】——ik自定义分词词库
在利用ik分词的过程中,当ik的分词规则不满足我们的需求了,这个时候就可以利用ik的自定义词库进行筛选,举个例子:当我要将“我是中国人,我想测试一下”这句话通过分词,将“我想测试一下”分为一个词的时候,就需要利用ik的自定义词库进行灌入指定的词。
【ES系列七】——ik自定义分词词库
|
自然语言处理 索引
【ES系列三】——ES集成ik分词并测试
解压后的结构如下图(需要放到elasticsearch安装目录的plugins文件夹下进行解压)
|
JSON 自然语言处理 数据格式
ElasticSearch用ik_analyzer分词器出现报错
ElasticSearch用ik_analyzer分词器出现报错
267 0
|
自然语言处理 索引
白话Elasticsearch29-IK中文分词之IK分词器配置文件+自定义词库
白话Elasticsearch29-IK中文分词之IK分词器配置文件+自定义词库
415 0
|
自然语言处理 算法 应用服务中间件
Elasticsearch安装IK分词器、配置自定义分词词库
Elasticsearch安装IK分词器、配置自定义分词词库
516 0
|
存储 XML SQL
solr之Ik中文分析器的安装
solr之Ik中文分析器的安装
131 0