Elasticsearc倒排索引(二):分析analysis

ES的数据可被广义的分为两种类型:“types:exect”和“full-text”。

精确值(Exact values)就是指数据未曾加工过的原始值,而Full-text则用于引用文本中的数据。

在查询中,精确值是很容易进行搜索的,但full-text则需要判断文档在“多大程度上”匹配查询请求,换句话讲,即需要评估文档与给定查询的相关度(relevant)。

因此,所谓的full-text查询通常是指在给定的文本域内部搜索指定的关键字,但搜索操作该需要真正理解查询者的目的,例如:

(1) 搜索“UK”应该返回包含“United Kingdom”的相关文档;
(2) 搜索“jump”应该返回包含“JUMP”、“jumped”、“jumps”、“jumping”甚至是“leap”的文档;
(3) 搜索“johnny walker”应该匹配包含“Johnnie Walker”的文档;

为了完成此类full-text域的搜索,ES必须首先分析文本并将其构建成为倒排索引(inverted index),倒排索引由各文档中出现的单词列表组成,列表中的各单词不能重复且需要指向其所在的各文档。

因此,为了创建倒排索引,需要先将各文档中域的值切分为独立的单词(也称为term或token),而后将之创建为一个无重复的有序单词列表。这个过程称之为“分词(tokenization)”。

Elasticsearch工作原理1

其次,为了完成此类full-text域的搜索,倒排索引中的数据还需进行“正规化(normalization)”为标准格式,才能评估其与用户搜索请求字符串的相似度。

例如,将所有大写字符转换为小写,将复数统一单数,将同义词统一进行索引等。

另外,执行查询之前,还需要将查询字符串按照同与索引过程的同种格式进行“正规化(normalization)”。

这里的“分词”及“正规化”操作也称为“分析(analysis)”。

Analysis过程由两个步骤的操作组成:首先将文本切分为terms(词项)以适合构建倒排索引,其次将各terms正规化为标准形式以提升其“可搜索度”。这两个步骤由分析器(analyzers)完成。

一个分析器通常需要由三个组件构成:字符过滤器(Character filters)、分词器(Tokenizer)和分词过滤器(Token filters)组成。

  • 字符过滤器:在文本被切割之前进行清理操作,例如移除HTML标签,将&替换为字符等;

  • 分词器:将文本切分为独立的词项;简单的分词器通常是根据空白及标点符号进行切分;

  • 分词过滤器:转换字符(如将大写转为小写)、移除词项(如移除a、an、of及the等)或者添加词项(例如,添加同义词);

Elasticsearch内置了许多字符过滤器、分词器和分词过滤器,用户可按需将它们组合成“自定义”的分析器。

固然,创建倒排索引时需要用到分析器,但传递搜索字符串时也可能需要分析器,甚至还要用到与索引创建时相同的分析器才能保证单词匹配的精确度。

执行full-text域搜索时,需要用到分析器,但执行精确值搜索时,查询过程不会分析查询字符串而是直接进行精确值匹配。

 

分词器

1、IK分词器也是基于正向匹配的分词算法。

2、IK分词器,基本可分为两种模式,一种为smart模式,一种为非smart模式

3、非smart模式所做的就是将能够分出来的词全部输出;smart模式下,IK分词器则会根据内在方法输出一个认为最合理的分词结果,这就涉及到了歧义判断

4、Lexeme 词元,compareTo(Lexeme other)这个方法决定了词元在链路中的位置

5、LexemePath词元链,分词的一种结果,根据前后顺序组成一个链式结构,其实就是由交叉的Lexeme 组成的有序集合QuickSortSet 。LexemePath也是实现Comparable接口的,用于歧义分析

实例:张三说的确实在理 根据正向匹配可能的词元链:

L1:{张三,张,三}

L2:{说}

L3:{的确,的,确实,确,实在,实,在理,在,理} 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值