es(1)-索引原理&数据写入过程分析

ES有很多亮点,其中一个就是他的索引方式:倒排索引;

正排索引是从文档到关键字的映射(已知文档求关键字),倒排索引是从关键字到文档的映射(已知关键字求文档)。通俗的来说,正向索引可以看作是查找所有文档,然后再去寻找关键字,而倒排索引是通过关键字做索引,然后找索引所对应的文档。

举个栗子:

假设我们有两个文档:

1)I have a friend who loves smile

2)love me, I love you

*表示该列文档中有这个词条,为空表示没有该词条

如果我们要搜索 I love you,我们只需要查找包含每个词条的文档:

两个文档都能匹配上,如果按命中词条数量来算,doc2比doc1更匹配。

这个是倒排索引最简化的表达方式,在ES的倒排索引存储结果中,还会记录每个词条在文档中出现的位置。

期望的分词处理

我们再看一下这个索引的建立过程,loves和love有区别吗?没有,都是爱的意思,一个是第三人称单数,一个是原形。如果能将一些语法的区别处理掉,这样的搜索结果是不是更切合实际需求?

例如:

loves提取词干处理成love

a,have之类的无实义的词,直接屏蔽掉

等等

现在索引看上去成这样:

常见分词器介绍

Elasticsearch自身提供了内置的分词器,也允许使用第三方的分词器。

内置分词器

标准分词器standard analyzer

ES默认分词器,根据Unicode联盟定义的单词边界划分文本,删除绝大部分标点,最后将词条小写。

简单分词器simple analyzer

在任何不是字母的地方分隔文本,将词条小写

空格分词器whitespace analyzer

在空格的地方划分文本

语言分词器language analyzer

特定的语言的分词器,如english,英语分词器,维护了一组英语停用词and、the之类的,用于删除词条,针对英文语法规则,有提取单词词干的能力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值