带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(1)

3.4.2.17.4.Analyzers / Custom analyzers


创作人:孙宁宇

审稿人:欧阳楚才

 

Elasticsearch 通过倒排索引实现全文检索,倒排索引中最核心的部分就是分词。为了构建这个倒排索引就需要我们把一个完整的句子通过某一种方式进行切割得到单词集合,而这个方式就是本节要介绍的分词器 Analyzer。例如 Avengers: Infinity War 通过分词后,我们就把拆解的3个单词 avengers,infinity 及 war 添加到倒排索引中。在后面的搜索阶段你就可以使用这3个单词来对文档进行匹配。

 

分词器在写入阶段

 

一个文本字段在写入 Elasticsearch 之前,分词器首先会对文本进行一系列的处理把文本进行分解。分词器就像管道一样,按照执行顺序依次把文本进行流转,处理完成后的文本将会被分解为一个一个的 token,而这些 token 就是组成倒排索引的基础。通过下图可以看出我们输入的字符串分别经历了 Character filters,Tokenizer,Token filters 三个阶段的操作,最后将分词结果 [ "heya", "we're", "elastic" ] 写入倒排索引中。


image.png


分词器在搜索阶段

 

默认情况下,在对 text 字段查询时使用的分词器就是字段写入时设置的分词器,这样做的目的就是能尽可能的让分词可以正确匹配。当然我们也可以指定和写入不一样的分词器作为搜索分词器。查询的字段内容首先按照设置的分词器进行分词操作,根据分词的结果在倒排索引中进行匹配。


image.png


图中的例子我们是想查询电影名称和 X-Man 相关的文档,首先要做的是对 X-Man 进行分词,由于我们在没有指定分词器,Elasticsearch 默认会使用 standard 类型的分词器进行解析,这个分词器的细节内容稍后的内容会进行介绍,这里你可以看到通过 standard 分词器的处理后,我们要搜索的内容 X-Man 会被分解成 X 和 Man 两个词,两个词分别在倒排索引中匹配,任何一个匹配上的文档都将会返回。

 


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(2) https://developer.aliyun.com/article/1229775

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(2)
104 0
|
算法
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(8)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(8)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(14)
132 0
|
存储 自然语言处理 算法
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)
121 0
|
存储 自然语言处理
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(5)
149 0
|
存储 自然语言处理 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(6)
119 0
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(3)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(3)
|
存储 算法 Java
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(11)
112 0
|
存储
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(9)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(9)
|
自然语言处理 API 索引
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)
带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(12)