MapReduce应用案例5:倒排索引

1.倒排索引

倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。
现代搜索引擎的索引都是基于倒排索引,其基本结构如图所示。
在这里插入图片描述

2.MR案例需求

输入

输入为文件目录中的N个文本文件

输出

输出每个单词出现的次数以及来源于哪篇文档,按照单词的字母顺序排序,如
Ada /input/1.txt 10
Allen /input/2.txt;/input/3.txt 8

3.实现分析

3.1 巧妙使用组合键

因为既要保存单词,又要保存单词出现的文档,定义一个Word组合键方便记录这两个属性,且利用MR自身的排序机制,在组合键中实现compare方法方便MR过程自动排序。

import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class WordWritable implements WritableComparable<WordWritable> {
   
    /**
     * 词项
     */
    private String word;
    /**
     * 词项出现的文档路径
     */
    private String filePath;
    /**
     * 默认构造方法
     */
    public WordWritable() {
   
    }
    /**
     * 带属性的构造方法
     * @param word
     * @param filePath
     */
    public WordWritable(String word, String filePath) {
   
        this.word = word;
        this.filePath = filePath;
    }
    /**
     * getter setter
     * @return
     */
    public String getWord() {
   
        return word;
    }
    public void setWord(String word) {
   
        this.word = word;
    }
    public String getFilePath() {
   
        return filePath;
    }
    public void setFilePath(String filePath) {
   
        this.filePath = filePath;
    }
    /**
     * 排序方法,让MR自动排序
     * 使用String的compareTo方法按字母顺序排列
     * @param o
     * @return
     */
    public int compareTo(WordWritable o) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值