倒排索引

  倒排索引(Inverted index),顾名思义,是一种反向的索引。首先我们先来看一下索引的概念,索引好比书的目录,通过目录可以快速找到想要的章节。而倒排索引就相当于知道章节的内容,就可以找到目录的信息。可能这样子类比还不是很清楚,那么我们就举一个简单的例子来说明一下。

  假设我们有三句话:

  T[0] = "it is what it is"

  T[1] = "what is it"

  T[2] = "it is a banana"

  在这里,我们的索引是建立在位置(position)和单词(word)之间建立。

  常规索引是指通过位置找到相应的单词,比如:T[0]的第一个单词是it,可以记为 (0,0) : "it",再如 (2,1) : "is"。

  倒排索引则是反过来,通过单词获取位置,比如:"it" 这个单词出现的位置有 (0,0) (0,3) (1,2) (2,0),这样可以记为 "it" :{(0,0) (0,3) (1,2) (2,0)}。通过对上述三句话建立倒排索引可以得到:

  "a"           : {(2,2)}

  "banana"  : {(2,3)}

  "is"          : {(0,1) (0,4) (1,1) (2,1)}

  "it"          : {(0,0) (0,3) (1,2) (2,0)}。

  "what"     : {(0,2) (1,0)}

  通过构建好的倒排索引,使得我们可以很方便的实现对语句的检索,比如: 需要检索包含"what" "is" "it"三个单词的语句,忽略倒排表中的第二位(单词在每句中的位置),可以得到 {0 1}∩{ 0 1 2}∩{0 1 2} = {0 1},因此我们断定T[0]和T[1]满足条件。在检索 "what is it"这个词组的时候还需要考虑到单词的具体位置,因此我们只能够获取到 T[1] 满足条件{(1,0) (1,1) (1,2)}。

  总结,上面的分析可以告诉我们,单词或语句的检索在构建好倒排索引之后可以转化成一个集合求解的问题,而不用逐行逐字的扫描,这使得检索效率得到大大地提高,这也就是为什么倒排索引在搜索领域如此重要的原因。同样有个问题摆在面前,建立倒排索引是非常耗时的。所幸的是这个过程可以离线完成。

  更多的资料信息请参考百度维基百科百度百科,以及相关论文等等

 

转载于:https://www.cnblogs.com/surgewong/p/3351863.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值