倒排索引的 MapReduce 代码,用起来还挺顺手的,适合你要大规模文本数据的时候。倒排索引嘛,说白了就是根据词来找文档,而不是按文档找词,思路跟数据库里的索引挺像的。Map 阶段做分词,Reduce 那边合并和聚类,逻辑清晰,改起来也不难。
MapReduce 的倒排索引,结构比较简洁,拿来做搜索引擎的小实验合适。如果你在搞 Hadoop 或者 Hive 的那套数据,刚好可以套用进去,效率也还不错。代码里对key-value
的写得蛮细,适合学习 MapReduce 的基本用法。
文档里提到的山大实验二倒排索引 Java 实现也不错,Java 写的,逻辑一目了然,适合你照着改。还有像停用词表的、UDF 实时计算这些扩展思路也值得看看。
顺带提一句,建索引之前,最好先做下分词和清洗,停用词啊、特殊字符这些要提前掉,不然索引出来没多大价值。如果你还不熟 MapReduce 的格式,推荐先跑跑官方例子。
如果你平时搞文本、搜索推荐,或者想了解搜索引擎底层是咋实现的,可以把这段代码拉下来玩玩,理解挺快的。