-
1.数据
-
2.索引构建:建立倒排索引的过程,就是索引构建。从给定的文档中生成索引
将文档分词,然后将单词序列转换成索引结构
-
3.索引检索:用户在发出请求时,利用索引进行检索。对结果进行相关性判断,排序。
其中对用户的输入的请求进行分词,逐词进行搜索。其中算法参考TF-IDF
-
4.索引管理器:即上一篇介绍的字典+倒排表
其中倒排表存储的文件编号(D-Gap差值),单词出现的频数,位置
倒排索引:平衡二叉树,b+树等。
-
5.建立索引:
5.1.两遍文档遍历法(内存中完成)第一遍遍历收集全局信息。总共文档个数N,文档集合内所包含的不同单词个数M, 每个单词在多少个文档中出现过的信息DF。 将所有单词对应的DF值全部相加,就可以知道建立最终索引所需 的内存大小是多少。
在第二遍扫描的时候,开始真正建立每个单词的倒排列表信息,即 对某个单词来说,获得包含这个单词的每个文档的文档ID,以及这个单 词在文档中的出现次数TF,这样就可以不断填充第一遍扫描所分配的内 存空间。当第二遍扫描结束的时候,分配的内存空间正好被填充满。经过两遍扫描完成索引建立后,即可将内存的倒排列表和词典信息写入磁盘,这样就完成了建立索引的过程。
从上述流程可以看出,索引 的构建完全是在内存中完成的,这就要求内存一定要足够大,否则如果文档集合太大,内存未必能够满足需求。
5.2排序法