信息检索导论中提到的倒排索引构建方法:
内存式单遍扫描索引构建方法(SPIMI : Single-pass in-memeory indexing):
思想:将一个文档集分割成几个大小相等的部分,参考标准就是分成的每个块可以一次性的装入内存
将处理每个块产生的词典写入磁盘,对于下一个块则重新采用新的词典。只要硬盘空间足够大,
SPIMI就能索引任何大小的文档集。
算法流程(在执行过程中反复调用SPIMI-Invert函数直到将全部文档集处理完成):
SPIMI-Invert(token_stream)
1 output_file = NEWFILE()
2 dictionary = NEWHASH()
3 while(free memory available)
4 do token ← next(token_stream)
5 if term(token) !∈dictionary // 即不在词典中
6 then postings_list = AddToDictionary(dictionary, term(token)) // 加入词典并返回词典位置
7 else postings_list = GetPostingList(dictionary, term(token)) // 找到词典位置
8 if full(postings_list) // 关键词对应存储倒排文档的数据结构可用空间是否已满
9 then postings_list = DoublePostingList(dictinary, term(token)) // 重新分配关键词对应存储倒排文档的数据结构可用空间 使其变为原来2倍
10 AddToPostingsList(postings_list, docId(token)) &nb
倒排索引构建算法SPIMI(已实现,修订版)
最新推荐文章于 2023-04-05 23:31:39 发布