目录

分布式搜索引擎-Hadoop

目录

分布式搜索引擎 (Hadoop)

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

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

A. Hadoop 安装

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

B.编译eclipse的hadoop插件

下载地址:

拷贝到eclipse的plugins目录。(新版本eclipse要拷贝到features目录),重启eclipse。

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即可。