倒排索引的一个简单结构如下图所示:
单词文档列表
最常见的是使用词频作为权重,即单词在一个文档中出现的次数。如图所示,已知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.txt和1.txt中。
以上只是词频作为权重,当然实际应用中权重可能很复杂,这里仅仅以词频为权重进行编码。
结合MapReduce框架的执行流程,倒排索引的处理步骤设计如下:
InputFormat处理后:
map()方法处理后:(之所以把文本位置放到K,为了方便Mapper处理)
Mapper框架进行处理:(之所以把文本位置放到K,为了方便此处处理)
Combiner进行处理:
为了方便Reducer框架进行处理,Combiner的输出需要改变一下:
Reducer框架进行处理:
Reduce()方法进行处理
以上过程转化为代码,仅仅需要重写map(),combine(),reduce()方法即可。
需要注意的是,对于输入输出的处理,上一环节的输入格式应该和上一环节的输出格式一样。
相关推荐
本系统源码是个人原创文章系列,程序员编程艺术第二十六章:基于给定的文档生成倒排索引的编码与实践的整个工程源码 look:http://blog.csdn.net/v_july_v/article/details/7109500 windows下VS2010,linux环境下皆...
c++倒排索引算法
倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 ...
对所给的Tweets数据集建立倒排索引; 实现Boolean Retrieval Model,使用TREC 2014 test topics进行测试; Boolean Retrieval Model中支持and, or ,not,查询优化可选做;
hadoop倒排索引,注意参数的设置,可以在eclipse中直接编辑
基于hadoop集群系统(也可以在伪分布式系统上运行)系统使用Java编写的倒排索引实现,具有使用停词表功能,使用正则表达式选择规范的单词。代码重构了setup(),map(),combiner(),partitation()和reducer()函数,...
倒排索引
这是山东大学大数据实验二,用Hadoop实现文档的倒排索引
建立倒排索引的重要核心代码,介绍代码中的核心思想并且附上了流程图,通过解释和图形展示更好了解
MapReduce操作实例-倒排索引.pdf 学习资料 复习资料 教学资源
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted ...
基于MapReduce的简单倒排索引的建立
读入文本集,建立倒排索引,内含有的TXT文本可以替换,源代码可以直接运行
大数据实验报告Hadoop编程实现InvertedIndex文档倒排索引程序附源码.doc
从财经新闻网页数据开始,进行正文提取、中文分词、倒排索引构建、执行搜索和UI。 要求技术:MapReduce或Spark;执行搜索和UI采用Spark或Java 步骤: (1)新闻正文提取,采用正则表达式提取指定网站栏目新闻的标题...
倒排索引的java实现,对于已经转化为txt的网页文档使用IK分词,然后建索引
倒排索引如何建立 以及如何压缩
针对SSE-1密文检索方案的一些性能缺陷,采用不同的加密策略,在lucene倒排索引的基础上,设计了密文倒排索引Crypt-Lucene,同时结合云计算特点,设计了并行构建Crypt-Lucene方案,理论分析了方案的性能,并通过实验...
针对自适应分段压缩ASCS算法进行了研究,对于ASCS算法中采用的均匀分段方式并非最优分段问题,提出以人工蜂群算法优化ASCS算法中的分段方式;...通过对比实验证明,优化改进后的算法可以较显著地压缩倒排索引。