倒排索引

倒排索引是文档检索系统中最常见的数据结构,被广泛的应用于搜索引擎。它是一种根据内容查找文档的方式。由于不是根据文档来找内容,而是根据进行了相反的操作,因此叫做倒排索引。

倒排索引的一个简单结构如下图所示:

 

单词文档列表

 

 

 

最常见的是使用词频作为权重,即单词在一个文档中出现的次数。如图所示,已知3个文档。



  


则他们的索引文件为


 

因此,当搜索条件为“MapReduce”“is”“simple”的时候,对应的集合为{(0.txt,1),(1.txt,1),(2.txt,2)}{(0.txt,1),(1.txt,2)}{(0.txt,1),(1.txt,1)}={0.txt,1.txt}

即关键字出现在0.txt1.txt中。

以上只是词频作为权重,当然实际应用中权重可能很复杂,这里仅仅以词频为权重进行编码。

结合MapReduce框架的执行流程,倒排索引的处理步骤设计如下:

 

 

InputFormat处理后:



  

 

map()方法处理后:(之所以把文本位置放到K,为了方便Mapper处理)



 

 

Mapper框架进行处理:(之所以把文本位置放到K,为了方便此处处理)



  

 

Combiner进行处理:



 

 

 

为了方便Reducer框架进行处理,Combiner的输出需要改变一下:



  

 

Reducer框架进行处理:



 

 

Reduce()方法进行处理



 
 

以上过程转化为代码,仅仅需要重写map(),combine(),reduce()方法即可。

需要注意的是,对于输入输出的处理,上一环节的输入格式应该和上一环节的输出格式一样。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值