当前位置: 首页 > >

分布式搜索引擎 (Hadoop)

发布时间:

之前在学校做过一个文档搜索引擎的课设,使用倒排索引,以及cos,布尔等计算模型。


现在由于hadoop的流行,本文实现了基于hadoop的文档搜索引擎,仍然使用倒排索引。


A. Hadoop 安装


Hadoop安装在网上有很多,再次不赘述。


B.编译eclipse的hadoop插件


下载地址:


https://github.com/abhishekgoel137/hadoop-eclipse-plugins/tree/master/hadoop-eclipse-plugins


拷贝到eclipse的plugins目录。(新版本eclipse要拷贝到features目录),*鬳clipse。


C.在eclipse下设置hadoop.


D.搜索引擎编程


我们分为两个部分,第一个部分是index,第二个部分是research。


每一个部分均包含mapper 和 reducer。


mapper(index):这个部分mapper会以字节偏移量决定key, value的话,会由yarn从所有slaves的blocks里面读取,这方面编程人员不需要考虑。


在value里即为文档中的内容,在这里我们使用extractor和filter对文档进行筛选(这里暂时称作sign)并最后保存到context的key中。文档的名字保存到context的value中。


reducer(index):这里的key和context是mapper中所设定的新的值。对相同的sign进行合并。


最后输出一个临时倒排索引的文档。


以下为research部分,这部分相对简单。


mapper(research):读取之前生成的倒排索引的文档,这里按行读取文档然后以重新整理。


比如倒排索引中有一行:dog,21,a.txt=>11$b.txt=>10那么在mapper中写入的key,value为:


a.txt,dog-21-11



b.txt,dog-21-10



reducer(research):对于每一对key-value,这里使用cos进行计算score然后写入context即可。



友情链接: