ElasticSearch搜索原理

倒排索引

索引的创建一般分为以下几步:

        第一步:将文档交给切词组件(Tokenizer)进行切词处理

        第二步:将得到的词元(Token)交给语言处理组件

        第三步:将得到的词(Term)交给索引组件

        第四步:由索引组件针对词建立索引

        针对上述步骤,我们给出2个示例文档,加以详细说明

        Document 1:Students should be allowed to go out with their friends, but not allowed to drink beer.

        Document 2:My friend Jerry went to school to see his students but found them drunk which is not allowed.

        第一步:切词组件处理

        上述2个文档会被交给切词组件,切词组件主要针对文档进行切割,将文档中的单词一个一个切割出来,同时消除一些无意义的词,比如标点符号、英文中的"the"和"is"、中文中的"的"等。因为标点符号和一些形容词,在实际的搜索中是很少会被搜索的,所以在该步骤会剃掉这些词语,减少索引的大小

        经过切割以后,可能会被切分成以下词元:

“Students”,“allowed”,“go”,“their”,“friends”,“allowed”,“drink”,“beer”,“My”,“friend”,“Jerry”,“went”,“school”,“see”,“his”,“students”,“found”,“them”,“drunk”,“allowed”

        第二步:语言处理组件处理

        该步骤主要针对第一步生成的词元进行自然语言同化处理,比如针对cars词元,同时生成新的词car;Student词元中的大写字母小写化,这样能够实现一个student搜索,可以同时搜索处理像Student、STUDENT、stuDENT等多种情况,经过该步骤处理后,可能会被切分成以下词:

“student”,“allow”,“go”,“their”,“friend”,“allow”,“drink”,“beer”,“my”,“friend”,“jerry”,“go”,“school”,“see”,“his”,“student”,“find”,“them”,“drink”,“allow”

        正因为有了自然语言处理组件,才能使得搜索drove,drive也能被搜出来

        第三步:将得到的词交给索引组件建立索引

        索引组件主要做以下几件事情:

        (1)、利用得到的词创建一个词典

https://img2.sycdn.imooc.com/5bcd9a760001af8506010385.jpg

        (2)、对字典按字母顺序进行排序

https://img1.sycdn.imooc.com/5bcd9aa20001d25205210394.jpg

        (3) 、合并相同的词并建立倒排链表

https://img1.sycdn.imooc.com/5bcd9abe000199d705380476.jpg

        在上述表中,有几个定义:

        Document Frequency:表示该词出现在所有文档的总数

        Frequency:表示在某一个文档中该词出现的次数

 

        第四步:建立索引

        针对最后生成的词典,进行索引的建立,至此我们发现根据搜索词,我们可以立即找到对应的文档;而且诸如drink、drunk等都可以找到同一个文档

其他细节说明

todo

本文参考文档:https://www.imooc.com/article/256020

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值