倒排索引

要理解倒排索引,不妨先来看看一般的索引和倒排索引的区别,也许对你的理解有些许帮助~

索引:通过位置找到相应的单词;

倒排索引:通过单词获取位置。

相信你已经了解了大概,下面就来仔细地看看倒排索引:

倒排索引(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)}。

总结单词或语句的检索在构建好倒排索引之后可以转化成一个集合求解的问题,而不用逐行逐字的扫描,这使得检索效率得到大大地提高,这也就是为什么倒排索引在搜索领域如此重要的原因。

缺点:建立倒排索引是非常耗时的。所幸的是这个过程可以离线完成。




  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值