基于块的排序索引(BSBI):
1 将需要建立索引的文档集分为几个大小相同的部分;
2 对每个部分的文档进行分析,建立词项ID-文档ID对应关系并加载到设定好的内存块中进行排序,转换成倒排索引后的中间文件存入磁盘;
3. 将中间文件合并形成最终的索引;
内存式单遍扫描索引构建(SPIMI):
1 将需要建立索引的文档集分为几个大小相同的部分;
2分析其中一个部分文档的词项-文档ID对应关系并构建词典,在块内存即将耗尽时将词典排好序后与磁盘中的倒排记录合并;
3 对于其他部分的文档,在新的词典上继续建立索引;
分布式索引构建(以MapReduce为例):
1 采用基于词项的分隔方法,将文档集合分割成多个数据片;
2 主控结点根据每个结点计算机运行情况将数据片分配给不同的结点分析器;
3 结点分析器分析文档建立词项ID-文档ID对,即根据词项对数据片再进行分区;
4 Reduce阶段将不同分析器的相同一键值(词项ID)进行汇总,放入索引器中建立倒排记录表;
动态索引构建:
如果文档随时间的变化不是很多并且可以允许一定的延时,则可以周期性的对文档重新建立索引;
否则,另外一种解决方案是同时保持着两个索引:一个是大的主索引,另外一个是用于存储新文档信息的辅助索引,其中辅助索引保存在内存中,辅助索引用于对文档新增内容建立索引,用户在检索时对主索引和辅助索引一起检索,当辅助索引很大时候,将其与磁盘中的主索引进行合并;