[IR] Index Construction
抛出问题
倒排索引的构建
Three steps to construct Inverted Index as following:

海量term排序
最难的step中:
- Token sequence.
- Sort by term.
- Dictionary & Postings
第2步中的最现实的问题是:假如100G的terms如何排序?
参考文档:http://home.ustc.edu.cn/~zhufengx/ir/pdf/solution.pdf【不错的课件内容】
External Sorting Algorithm (外排)
基于块的排序索引方法 BSBI(blocked sort-based indexing algorithm)

注释:
4. 文档集读取
5. 排序
6. 排序结果fi 存放到disk
7. Merge 这些排序结果为一个整体的Inverted Index list. 使用小窗口一点点地放入min-heap,
堆顶端输出的是Inverted Index list的 dictionary部分,由小变大的顺序(因为fi 已排序)
注解:说白了就是“两个有序链表的合并”。
- 需要将词项映射成词项ID,必须事先知道词项的排序(知道整个词 典)。
- 所有的块共享一个全局的大词典。
- 如果在每块的处理中,不将词项映射成词项ID,而是直接对“词项-文 档ID”对进行排序,排序的代价将大大增加(整数的比较VS字符串的 比较)。

小缺陷
因为实际使用的是ID。并且一开始就整理出所有的词项 ID—文档 ID 并对它们进行排序的做法。
既然要排序,所以相对耗时。
内存式单遍扫描索引构建方法

注释:
拥有同一hash value的terms的排序设计:
Insert-at-back and move-to-front heuristic
每个块fi 建立新dict;
去除了高代价的sort最后一步依然是 MergeBlocks(.)
突出特点
用了词对索引的直接关联。还有1个比较大的特点是他不经过排序,直接按照先后顺序构建索引。
Term list采用了hash的方式去查找,故构建的过程中不需要排序。
动态索引 - Dynamic Indexing
同时保持着两个索引:一个是大的主索引,另外一个是用于存储新文档信息的辅助索引。
其中辅助索引保存在内存中,辅助索引用于对文档新增内容建立索引,用户在检索时对主索引和辅助索引一起检索,当辅助索引很大时候,将其与磁盘中的主索引进行合并;

注释:
Main Index在Disk; Auxiliary Index在Memory。
可以视为 Immediate Merge 与 No merge 的一个折中。
由于每个倒排记录在 log2(T/n)层 的每一层中都只处理一次,因此整个索引构建的时间是Θ(T*log2(T/n))。
引伸:
求Disk中最后留下的Index的数量。
We use |C| to denote the total size of the document collection, and M to denote the memory size.
Let's assume that: C = h*M
For i in [, log2h]
{
X = [h - (2i – )] mod [2i+1]
If X belong to (, 2i],
exist in column.
Else,
not exist.
}
The sum of existing X is the answer.
大数据量排序
数据多到内存装不下怎么办?
假设内存有100M容量
比如1G的数据,分10份,每份100M。先用快排让每一份各自排好序,然后写到文件中。这10份100M的 文件这个时候已经有序了。
这10份每份取9M,一共90M,使得他们合并。合并后的结果放到10M的缓存区中,满了就clear,IO到 文件中。
理解
有点小根对的意思,例如总是将最小的数字放入10M缓存中,放满后也就是top 10M小的elements,然后save to disk中。
End.
[IR] Index Construction的更多相关文章
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- [Code] 烧脑之算法模型
把博客的算法过一遍,我的天呐多得很,爱咋咋地! 未来可考虑下博弈算法. 基本的编程陷阱:[c++] 面试题之犄角旮旯 第壹章[有必要添加Python] 基本的算法思想:[Algorithm] 面试题之 ...
- [IR] Information Extraction
阶段性总结 Boolean retrieval 单词搜索 [Qword1 and Qword2] O(x+y) [Qword1 and Qword2]- 改进: Gallo ...
- coursera课程Text Retrieval and Search Engines之Week 2 Overview
Week 2 OverviewHelp Center Week 2 On this page: Instructional Activities Time Goals and Objectives K ...
- 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章
不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整 理 | Leo 出 ...
- [IR] Inverted Index & Boolean retrieval
教材:<信息检索导论> 倒排索引 How to build Inverted Index? 1. Token sequence. 2. Sort by terms. 3. Dictiona ...
- [IR] Time and Space Efficiencies Analysis of Full-Text Index Techniques
文章阅读:全文索引技术时空效率分析 LIU Xiao-ZhuPENG Zhi-Yong 根据全文索引实现技术的不同,将其分为三大类: 索引技术 (倒排文件.签名文件 .后缀树与后缀数组) 压缩与索引混 ...
- Theoretical comparison between the Gini Index and Information Gain criteria
Knowledge Discovery in Databases (KDD) is an active and important research area with the promise for ...
- 数据结构 - Codeforces Round #353 (Div. 2) D. Tree Construction
Tree Construction Problem's Link ------------------------------------------------------------------- ...
随机推荐
- NGUI ScrollView 循环 Item 实现性能优化
今天来说说一直都让我在项目中头疼的其中一个问题,NGUI 的scrollView 列表性能问题,实现循环使用item减少性能上的开销. 希望能够给其他同学们使用和提供一个我个人的思路,这个写的不是太完 ...
- emoji表情引发的JNI崩溃
今天突然接到客服那边的反馈说,有玩家反馈进游戏后不久就崩溃了,我先是怀疑网络问题,因为一连接聊天成功后就挂了.之后用logcat抓日志,发现挂在jni那里了 JNI DETECTED ERROR IN ...
- Correct use of System.Web.HttpResponse.Redirect
from:https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redire ...
- Apache和tomcat服务器使用ajp_proxy模块
首先我们先介绍一下为什么要让Apache与Tomcat之间进行连接.事实上Tomcat本身已经提供了HTTP服务,该服务默认的端口是8080,装好tomcat后通过8080端口可以直接使用Tomcat ...
- c# 压缩文件
递归实现压缩文件夹和子文件夹. using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- android中xmlns:tools属性详解
今天读到一篇总结的非常棒的文章,写的逻辑很清晰也很实用,很少见到如此棒的文章了.就原文转发过来,我把格式给整理了一下,分享给园子里的各位朋友!好久没写博客了,就为2015年的11月留份纪念吧.希望对你 ...
- 八卦一下黄晓明和Angelababy的电话号码
最新一期20150605的<奔跑吧兄弟>真是太搞笑了,邓超被大家整的... 但这一期有个细节引起了我的注意,就是Angelababy在现场打电话给黄晓明,而拨键声音十分清晰.一些拥有“绝对 ...
- Word中怎么设置标题的自动编号
转自: http://jingyan.baidu.com/article/4f7d5712c39c0a1a201927ea.html
- 【Android源代码下载】收集整理android界面UI效果源码
在Android开发中,Android界面UI效果设计一直都是很多童鞋关注的问题,今天给大家分享下大神收集整理的多个android界面UI效果,都是源码,都是干货,贡献给各位网友! 话不多说,直接上效 ...
- Oracle限制某个用户的连接数及PROFILE介绍
限制一个用户的链接数,可以通过ORACLE的PROFILE文件来实现 1. 查看resource_limit参数: SQL> show parameter resource_limit ...