daopia

倒排索引是一种以关键字和文档编号结合,并以关键字作为主键的索引结构。倒排索引分为两个部分。

1)第1个部分:由不同索引词(index term)组成的索引表,称为"词典"lexicon)。其中保存了各种中文词汇,以及这些词汇的一些统计信息(例如出现频率nDocs),这些统计信息用于各种排名算法(Ranking Algorithm) [Salton 1989;Witten 1994]

2)第2个部分:由每个索引词出现过的文档集合,以及命中位置等信息构成,也称为"记录表"posting file)或"记录列表"posting list)。如图4-6所示。

 

4-6  倒排索引

左边的表结构(词典)记录索引词Id号、匹配该索引词的文档数量,并匹配文档在记录文件内的偏移量,通过这个偏移量就可以读取记录文件对应区域的信息。例如在图4-6中,通过读取T1的偏移量x,读取在记录文件中T1命中的相关文档Doc1Doc2Doc3的相关信息。

右边的表结构(记录表)记录文档编号(DocId)、索引词在该文档的命中个数(NHits),以及命中域的列表(HitList)。例如在图4-6中,记录文件显示了T2关键词在Doc1中出现了3次。

4-6所示的倒排索引示例中,以索引词T2为例,T2在两个文档中出现。通过偏移量在记录文件中找到了存放与T2有关的信息,即T2匹配的Doc1Doc2两个文档,并且在Doc1中出现了3次,位置分别为357(图中322表示为差分序列后的实际值,即35-37-5)。

注意到这种按照索引词组织文档的方式,在索引词WordId一边,其Id号不会重复;而在DocId一边,由于每个文档都可能包含多个索引词,DocId的重复非常普遍,因此对DocId就需要进行大规模的压缩。

压缩编码也采用Variable Byte Coding编码方法进行压缩,首先对DocId排序,接下来将DocId的递增序列为差分序列,最后用Variable Byte Coding编码方法进行压缩编码。例如这样的DocId序列(22591),通过排序得到(15922),变差分序列得到(14413),压缩编码后得到(28826),对于小于128的数进行压缩编码,相当于乘2(详细参见本章第三节中的相关内容)。

最后,在倒排索引中,按照何种顺序存放DocId更加有利于检索呢?在图4-6中,T1这个词有Doc1Doc2Doc3与之相匹配,也就是在这些文档中都出现了T1,那么在倒排索引的记录表中,哪个文档编号先存放,哪个文档编号后存放呢?这种存放顺序的策略大致有如下3种。

1)按照DocId升序存放。

2)按照索引词在文档中出现次数降序存放。

3)记录表分块存放,块内按DocId升序存放,块间按PageRank值降序存放。

对于方案1来说,它有助于在多关键词查询中,得到相同的DocId(在第六章中介绍查询系统时,会提到因为DocId有序而为查询带来的好处)。并且能够对DocId进行压缩编码,同时降低磁盘I/O的开销。

对于方案2来说,按照索引词Id在文档中出现的次数降序排序,因为索引词出现次数多的文档与查询关键词的相关性越好(这里,索引词和关键词是同一个词,在索引系统中称为"索引词",在查询系统中称为"关键词""查询词"),这是很自然的,检索就是检索哪些与查询词相关性高的文档。文献[S. Brin 1998]阐述了一种折中的设计方案,即不同的索引词命中区分对待,对于索引词在标题或者锚文本(Anchor)命中的文档,以及命中信息存放在一个记录表中,不妨称为"A",表内数据按DocId排序;命中其他位置的文档及其命中信息存放在另一个记录表中,称为"B",同样表内数据也是按照DocId排序。这样对于每个索引词的查询,优先在表A中查询。只有当结果数不够时,再到表B中查询。这样既照顾到了压缩存储的需要,也照顾到了相关性,通常标题中的词大多在正文中会多次出现。当然这种折中的方法有时也不够合理,它过分倚重于锚文本的关键词,常常被针对这种算法作弊的网页设计者利用。

对于方案3来说,一方面照顾到了方案1的索引压缩功能(文档按序存储);另一方面照顾了重要的文档在检索过程中优先被检索的需要,而且防止了方案2中由网页设计者作弊可能带来的麻烦。有些网页设计者在网页中正文,锚文本中堆砌大量经常被查询的重要关键词,因此方案2在设计上不可避免的缺陷容易被利用。当然PageRank算法也会被作弊者利用,然而PageRank的作弊较为困难,所以方案3是较为理想的解决方案。

最后,总结一下正排索引和倒排索引的关系。本质上说,存在这样两个空间,一个称为"索引词空间",一个称为"文档空间"。正排索引可以理解成一个定义在文档空间到索引词组空间的一个映射,任意一个文档对应唯一的一组索引词;而倒排索引可以理解成一个定义在索引词空间到文档组空间的一个映射。任意一个索引词对应唯一的一组该索引词其命中的文档。因此从文档到正排索引,进而从正排索引到倒排索引就是理顺这种关系的过程。使得给出一个索引词,就能通过倒排索引能够找到其命中的文档,以及位置信息。

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
标题Django基于大数据的大麦网演唱会数据系统研究AI更换标题第1章引言阐述基于Django和大数据的大麦网演唱会数据系统的研究背景、意义、现状及创新点。1.1研究背景与意义分析大麦网演唱会数据现状及大数据处理的必要性。1.2国内外研究现状综述国内外在演唱会数据系统方面的研究进展。1.3研究方法及创新点介绍本文采用的研究方法及系统设计的创新点。第2章相关理论介绍Django框架和大数据处理相关理论。2.1Django框架概述介绍Django框架的特点和优势。2.2大数据处理技术介绍大数据处理的关键技术,包括数据采集、存储、分析和可视化。2.3数据挖掘与机器学习阐述数据挖掘和机器学习在数据处理中的应用。第3章系统设计详细介绍基于Django和大数据的大麦网演唱会数据系统的设计方案。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库设计。3.2功能模块设计介绍系统的各个功能模块,如数据采集、处理、分析和展示。3.3数据库设计阐述数据库的设计思路和表结构。第4章数据收集与处理介绍系统数据收集和处理的方法。4.1数据收集方法介绍从大麦网获取演唱会数据的方法。4.2数据清洗与预处理阐述数据清洗和预处理的过程。4.3数据存储与管理介绍数据存储和管理的方法,包括数据库的选择和优化。第5章系统实现与测试介绍系统的实现过程和测试方法。5.1系统实现过程详细介绍系统的实现步骤和关键代码。5.2系统测试方法介绍系统测试的方法和测试用例设计。5.3测试结果与分析对测试结果进行分析,评估系统的性能和稳定性。第6章结论与展望总结本文的研究成果,并展望未来的研究方向。6.1研究结论概括本文的主要研究成果和系统实现效果。6.2展望指出系统存在的不足和未来改进的方向。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值