elasticsearch学习4--倒排索引与分词

一、倒排索引

1.正向索引

ID作者文章标题文章内容
1Cape1es索引努力学习倒排索引
2Cape2mysql索引学习普通索引

以上述内容为例,构建id正向索引和文章标题正向索引

索引文章内容
1努力学习倒排索引
2学习普通索引
es索引努力学习倒排索引
mysql索引学习普通索引

当我们知道文章id或者文章题目的时候,可以很容易的检索到文章的内容。但是,如果我们只知道文章中的某个关键词,例如需要检索到与“倒排索引”有关的文章时,就只能对文章内容进行全文检索了。当文章内容很大,数据量很多的时候就没有办法保证效率了。对于这类需求,关系型数据库的索引就不太合适了,最好使用基于倒排索引的数据库

2.倒排索引

同样以上述内容为例构建倒排索引

TokenID为1 的文章ID为2的文章
努力
学习
倒排
普通
索引

上表倒排序索引包含两个部分:

单词词典:记录所有文档单词,记录单词到倒排列表的关联关系
倒排列表:记录单词与对应文档结合,由倒排索引项组成

每个Token为一个倒排索引项,包含以下4个内容

文档:Doc Id - 包含此Token的文档id
词频:TF - 单词在文档中出现的次数,用于相关性评分
位置:Position - 单词在文档中分词的位置,用于phrase query
偏移:Offset - 记录单词开始结束的位置,实现高亮显示

例如

单词Doc IdTFPosition Offset
学习111<2,4>
210<0,2>

二、Analysis 分词

Analysis:即文本分析,是把全文本转化为一系列单词(term/token)的过程,也叫分词;在Elasticsearch中可通过分词器(Analyzer)实现分词,分词器可以是内置的也可以是定制分词器。

Analyzer 分词过程简介

1)字符过滤器 character filter
首先,字符串按顺序通过每个字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 and。

2)分词器 tokenizer
其次,字符串被 分词器 分为单个的词条。一个 whitespace的分词器遇到空格和标点的时候,可能会将文本拆分成词条。

3)令牌过滤器token filter
最后,词条按顺序通过每个 token 过滤器 。这个过程可能会改变词条,例如,lowercase token filter 小写化(将ES转为es)、stop token filter 删除词条(例如, 像 a, and, the 等无用词),或者synonym token filter 增加词条(例如,像 jump 和 leap 这种同义词)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值