分布式搜索引擎-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即可。