Inverted Index(倒排索引)是目前几乎所有支持全文检索的搜索引擎都要依赖的一个数据结构。基于索引结构,给出一个词(term),能取得含有这个term的文档列表(the list of documents)。例如:
如果考虑单词在每个文档中出现的词频、位置、对应Web文档的URL等诸多属性,简单的倒排算法就不足以有效工作。我们把这些词频、位置等诸多属性称为有效负载(Payload)。
其Map和Reduce实现伪代码如下:
1: class Mapper
2: procedure Map(docid n, doc d)
3: H ← new AssociativeArray
4: for all term t ∈ doc d do
5: H{t} ← H{t} + 1 //词频属性
6: for all term t ∈ H do
7: Emit(term t, posting <n, H{t}>)
1: class Reducer
2: procedure Reduce(term t, postings [<n1, f1>, <n2, f2>…])
3: P ← new List
4: for all posting <a, f&