前言
我又出现了,这次不是更新 JVM 系列,毕竟要有时间嘛,所以我想在讲个其他系列的,正好最近了解了一下 ElasticSearch,刚好来分享一下。
我们都知道,ElasticSearch 有着非常优秀的检索文章的能力。并且我相信大多数人,都知道,这都是得益于它本身的倒排索引数据结构,大大提升了检索的性能。
但是呢,知道了这个数据结构,我们都表示明白了为什么那么快,但还是有点云里雾里。在倒排索引的内部组成有两部分重要组成,单词词典和倒排列表。
本篇的文章,就是带着大家了解,单词词典中的“单词”怎么来的!
Analysis 分词
首先解释一下,什么是 Analysis ? 可以把它理解为将文本转换成一系列单词(term/tokem)的过程(Analysis)。那么是怎么实现的?
在 ElasticSearch 中,Analysis 是通过 Analyzer 实现的。
那么又有问题了。
- 它的组成是什么?
- Analyzer 中间做了什么?
Analyzer 分词器
首先,它的组成是是什么?
- Character Filters 。简单理解一下,就是针对原始文本处理,例如去除 Html,增删替换字符串,可以配置多个。
- Tokenizer。将原始文本按照规则分为单词)
- Token Filters。将切分后的单词进行加工,小写处理