倒排索引构建算法BSBI和SPIMI

参考:https://blog.csdn.net/androidlushangderen/article/details/44889677

倒排索引 :

一般的索引检索信息的方式。比如原始的数据源假设都是以文档的形式被分开,文档1拥有一段内容,文档2也富含一段内容,文档3同样如此。然后给定一个关键词,要搜索出与此关键词相关的文档,自然而然我们联想到的办法就是一个个文档的内容去比较,判断是否含有此关键词,如果含有则返回这个文档的索引地址,如果不是接着用后面的文档去比,这就有点类似于字符串的匹配类似。很显然,当数据量非常巨大的时候,这种方式并不适用。原来的这种方式可以理解为是索引-->关键词,而倒排索引的形式则是关键词--->索引位置,也就是说,给出一个关键词信息,我能立马根据倒排索引的信息得出他的位置

BSBI: Blocked sort-based indexing   https://nlp.stanford.edu/IR-book/html/htmledition/blocked-sort-based-indexing-1.html

1、将文档中的词进行id的映射,这里可以用hash的方法去构造

2、将文档分割成大小相等的部分。

3、将每部分按照词ID对上文档ID的方式进行排序

4、将每部分排序好后的结果进行合并,最后写出到磁盘中。

5、然后递归的执行,

 

SPIMI: Single-pass in-memory indexing   https://nlp.stanford.edu/IR-book/html/htmledition/single-pass-in-memory-indexing-1.html

1、对每个块构造一个独立的倒排索引。

2、最后将所有独立的倒排索引进行合并就OK了。

 

posted @ 2019-05-12 20:14  忘记时间zms  阅读(1104)  评论(0编辑  收藏  举报