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.测试索引字段查询分词结果

目前还没有测试接口。

相关文章
|
SQL 关系型数据库 MySQL
docker上定期备份mysql数据库
本文是博主学习docker的记录,希望对大家有所帮助。
1840 0
|
3月前
|
人工智能 编解码 自然语言处理
构建AI智能体:八、AI新纪元:ModelScope魔法 — 本地搭建超酷的图片处理模型
ModelScope是由阿里巴巴达摩院推出的AI模型托管与服务平台,被称作AI模型的Github。它汇集了自然语言处理、计算机视觉、语音识别等领域的数千个高质量预训练模型,大幅降低了AI应用开发门槛。平台提供简化的Pipeline API,只需几行代码即可调用模型,并支持模型微调。与通义千问等单一AI产品不同,ModelScope是一个开放的模型生态系统,覆盖更广泛的应用场景。通过实际案例展示了其在人像卡通化、抠图、天空替换等方面的应用效果。
656 2
|
4月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
473 9
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
328 7
一套以用户体验出发的.NET8 Web开源框架
|
存储 XML 人工智能
深度解读AI在数字档案馆中的创新应用:高效识别与智能档案管理
基于OCR技术的纸质档案电子化方案,通过先进的AI能力平台,实现手写、打印、复古文档等多格式高效识别与智能归档。该方案大幅提升了档案管理效率,确保数据安全与隐私,为档案馆提供全面、智能化的电子化管理解决方案。
1084 48
|
12月前
|
存储 机器学习/深度学习 人工智能
昇腾AI行业案例(六):基于 PraNet 的医疗影像分割
欢迎学习《基于 PraNet 的医疗影像分割》实验。在本实验中,你将深入了解如何运用计算机视觉(CV)领域的 AI 模型,搭建一个高效精准的医疗影像分割系统,专注于息肉分割任务,并利用开源数据集对模型效果加以验证。
322 1
|
API 索引
【Elasticsearch】-配置分词器
Elasticsearch中的文本分析发生在以下两个时机,索引时 当文档被索引时,任何文本字段值都会被分析;搜索时 在文本字段上运行全文搜索时,会分析查询字符串。
1107 0
|
自然语言处理 达摩院 索引
Elasticsearch 中文分词器
在使用Elasticsearch 进行搜索中文时,Elasticsearch 内置的分词器会将所有的汉字切分为单个字,对用国内习惯的一些形容词、常见名字等则无法优雅的处理,此时就需要用到一些开源的分词器,以下分别介绍几种常见的中文分词器
10612 2
Elasticsearch 中文分词器
|
安全 Java 应用服务中间件
Spring Boot 实现程序的优雅退出
Spring Boot 实现程序的优雅退出
|
SQL Java 数据库连接
MyBatis-Plus更新使用null值
MyBatis-Plus更新使用null值
596 2