先来简单介绍一下什么是文档倒排索引 倒排索引是文档检索系统中最常见的数据结构,被广泛应用在全文搜索引擎上.主要用来存储某个单词(或词组)在一个文档或者一组文档中的存储位置的映射,即提供了一种根据内容来查找文档的方式. 简单点来讲呢,就是根据内容找文章. 倒排索引的概念说明白了,就该说说怎么用MapReduce实现. 测试数据奉上: file1:MapReduce is simple file2:MapReduce is powerful is simple file3:Hello MapRe…
这是一道来自百度的面试题.倒排索引的AND操作. 倒排索引是以关键词作为索引项来索引文档的一种机制,如图中Brutus.Calpurnia.Caesar为关键词,2.4.8等等为文档ID. 现在有一个查询:Brutus AND Calpurnia AND Caesar.这个查询实际上就是要找出Brutus(以下简称B).Calpurnia(以下简称C1)和Caesar(C2)的索引文档中的相同项.假设B.C1.C2的长度分别为m.n.p. 比较容易想到的是用归并排序的思想来解决这个问题.即…
本文以及后面几篇文章将讲解如何定位 Lucene 中的倒排索引.内容很多,唯有静下心才能跟着思路遨游. 我们可以思考一下,哪个步骤与倒排索引有关,很容易想到检索文档一定是要查询倒排列表的,那么就从此处入手.检索文档通过调用 IndexSearcher.search(Query query, int n) 方法返回匹配的文档. public class IndexSearcher { public TopDocs search(Query query, int n) throws IOExcept…