- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lecture1-booleanretrieval 信息检索导论 王斌 PPT 课件 第1章
倒排索引(续) 通常采用变长表方式 磁盘上,顺序存储方式比较好,便于快速读取 内存中,采用链表或者可变长数组方式 存储空间/易插入之间需要平衡 * Dictionary Postings 按docID排序 (原因后面再讲) Posting Brutus Calpurnia Caesar 1 2 4 5 6 16 57 132 1 2 4 11 31 45 173 2 31 174 54 101 词典 倒排(记录)表 倒排记录 Tokenizer 词条流 Friends Romans Countrymen 倒排索引构建 Linguistic modules 修改后的词条 friend roman countryman Indexer 倒排索引 friend roman countryman 2 4 2 13 16 1 待索引文档 Friends, Romans, countrymen. 词条化工具 语言分析工具 索引构建过程: 词条序列 词条,docID二元组 I did enact Julius Caesar I was killed i the Capitol; Brutus killed me. Doc 1 So let it be with Caesar. The noble Brutus hath told you Caesar was ambitious Doc 2 索引构建过程: 排序 按词项排序 然后每个词项按docID排序 索引构建的核心步骤 索引构建过程: 词典 倒排记录表 某个词项在单篇文档中的多次出现会被合并 拆分成词典和倒排记录表两部分 每个词项出现的文档数目(doc. frequency, DF)会被加入 为什么加入?后面会讲 存储开销计算 * 指针 词项及文档频率 后续章节: 如何快速构建索引? 如何减少存储开销? 倒排索引 docID表 第一讲:布尔检索 提纲 * 信息检索概述 倒排索引 布尔查询的处理 第一讲:布尔检索 假定索引已经构建好 如何利用该索引来处理查询? 后面会讲 – 如何处理不同类型的查询? 比如带通配符的查询 “信息*检索” * 今天主要内容 第一讲:布尔检索 AND查询的处理 考虑如下查询(从简单的布尔表达式入手): Brutus AND Caesar 在词典中定位 Brutus 返回对应倒排记录表(对应的docID) 在词典中定位Caesar 再返回对应倒排记录表 合并(Merge)两个倒排记录表,即求交集 * 128 34 2 4 8 16 32 64 1 2 3 5 8 13 21 Brutus Caesar 合并过程 每个倒排记录表都有一个定位指针,两个指针同时从前往后扫描, 每次比较当前指针对应倒排记录,然后移动某个或两个指针。合并时间为两个表长之和的线性时间 * 34 128 2 4 8 16 32 64 1 2 3 5 8 13 21 128 34 2 4 8 16 32 64 1 2 3 5 8 13 21 Brutus Caesar 2 8 假定表长分别为x 和y, 那么上述合并算法的复杂度为 O(x+y) 关键原因: 倒排记录表按照docID排序 上述合并算法的伪代码描述 * 其它布尔查询的处理 OR表达式:Brutus AND Caesar 两个倒排记录表的交集 NOT表达式: Brutus AND NOT Caesar 两个倒排记录表的减 一般的布尔表达式 (Brutus OR Caesar) AND NOT (Antony OR Cleopatra) 查询处理的效率问题! * 查询优化 查询处理中是否存在处理的顺序问题? 考虑n 个词项的 AND 对每个词项,取出其倒排记录表,然后两两合并 Brutus Caesar Calpurnia 1 2 3 5 8 16 21 34 2 4 8 16 32 64 128 13 16 查询: Brutus AND Calpurnia AND Caesar * 查询优化 按照表从小到大(即df从小到大)的顺序进行处理: 每次从最小的开始合并 * 这是为什么保存 df的原因之一 相当于处理查询 (Calpurnia AND Brutus) AND Caesar. Brutus Caesar Calpurnia 1 2 3 5 8 16 21 34 2 4 8 16 32 64 128 13 16 更通用的优化策略 e.g., (madding OR crowd) AND (ignoble OR strife) 每个布尔表达式都能转换成上述形式(合取范式) 获得每个词项的df (保守)通过将词项的df相加,估计每个OR表达式对应的倒排记录表的大小 按照上述估计从小到大依次处理每个OR表达式. *
文档评论(0)