信息检索与数据挖掘|(四)索引构建

news2024/12/23 23:21:20

目录

📚硬件基础

📚基于块的排序索引方法

🐇BSBI算法(blocked sort-based indexing)

📚内存式单遍扫描索引构建方法

🐇SPIMI算法(single-pass in-memory indexing)

📚分布式索引构建方法


📚硬件基础

  • 访问内存数据比访问磁盘数据快得多。
  • 进行磁盘读写时,磁头移到数据所在的磁道需要一段时间,该时间称为寻道时间寻道期间并不进行数据的传输。
  • 操作系统往往以数据块为单位进行读写。因此,从磁盘读取一个字节和读取一个数据块所耗费的时间可能一样多。也就是说,将一大块数据从磁盘传输到内存比传输许多小块要快
  • IR系统的服务器往往有数GB甚至数十GB的内存,其可用的磁盘空间大小一般比内存大小要高几个数量级。

📚基于块的排序索引方法

  • 面向静态文档集的高效单机索引算法
  • 之前提出的倒排索引构建方法(如下),对于小规模文档集来说,均可在内存中完成。在大规模文档集条件下,需要引入二级存储介质来构建索引。
    • 扫描文档集合得到所有的词项-文档ID对。
    • 以词项为主键,文档ID为次键进行排序。
    • 将每个词项的文档ID组织成倒排记录表。

  • 现在将词项用其ID来代替,每个词项的ID都是唯一的。我们可以在处理文档集之余将词项映射成其ID(单遍扫描)。或者在一种两边扫描的方法中,第一遍扫描得到词汇表,第二遍扫描才构建倒排索引。

  • 这里以Reuters-RCV1语料的统计数据为例。

  • Reuters-RCV1语料约有一亿个词条,每个占4B,存储所有的词项ID-文档ID对需要0.8GB存储空间。
  • 对大规模文档集而言,将所有词项ID-文档ID放在内存中进行排序是非常困难的。对于很多大型语料库,即使经过压缩后的倒排记录表也不可能全部加载到内存中。
  • 由于内存不足,我们必须使用基于磁盘的外部排序算法。对该算法的核心要求就是:在排序时尽量减少磁盘随机寻道的次数。

🐇BSBI算法(blocked sort-based indexing)

  • BSBI(blocked sort-based indexing algorithm,基于块的排序索引算法)是一种解决办法:
    • 将文档集分割成几个大小相等的部分。
    • 对每个部分的词项ID-文档ID对排序。
    • 将第2步产生的临时排序结果存放到磁盘中。
    • 将所有的临时排序文件合并成最终的索引。
  • 在该算法中,我们选择合适的块大小,将文档解析成词项ID-文档ID对并加载到内存,在内存中快速排序。将排序后的结果转换成倒排索引格式后写入磁盘。然后将每个块索引同时合并成一个索引文件。
  • 以该算法应用到Reuters-RCV1语料库为例,它要构建的倒排记录数目大概有1亿条,假定内存每次能加载1,000万个词项ID-文档ID,那么算法最后产生10个块,然后将10个块索引同时合并成一个索引文件。
  • 合并时,同时打开所有块对应的文件,内存中维护了为10个块准备的读缓冲区和一个为最终合并索引准备的写缓冲区。每次迭代中,利用优先级序列(即堆结构)选择最小的未处理词项ID进行处理。读入词项的倒排记录表并合并,合并结果写会磁盘。

  • 由于该算法最主要的时间消耗在排序上,因此其时间复杂度为 Θ(TlogT),其中 T 是所需要排序的项数目的上界(即词项 ID-文档 ID 对的个数)。然而,实际的索引构建时间往往取决于文档分析(PARSENEXTBLOCK)和最后合并(MERGEBLOCKS)的时间。

📚内存式单遍扫描索引构建方法

  • 基于块的排序索引算法有很好的可扩展性,但缺点是需要将词项映射成其ID,因此在内存中保存词项与其ID的映射关系,对于大规模的数据集,内存可能存储不下
  • SPIMI(single-pass in memory indexing,内存式单遍扫描索引算法)更具可扩展性,它使用的是词项而不是其ID,它是将每个块的词典写入磁盘,对下一个块则重新采用新的词典。

🐇SPIMI算法(single-pass in-memory indexing)

  • 算法逐一处理每个词项-文档ID,若词项是第一次出现,则将其加入词典(最好通过哈希表实现),同时建立一个新的倒排记录表;若该词项不是第一次出现,则直接返回其倒排记录表。注意:这里倒排记录表都是在内存中的。
  • 向上面得到的倒排记录表增加新的文档ID。

  • 不同于BSBI,这里并没有对词项ID-文档ID排序
  • 内存耗尽时,对词项进行排序,并将包含词典和倒排记录表的块索引写入磁盘。这里,排序的目的是方便以后对块进行合并。
  • 重新采用新的词典,重复以上过程。

其实SPIMI和BSBI并没有太多的区别。他们都是基于块来做索引构建,然后将块合并得到整体的倒排索引表。不同的是BSBI需要在内存维护词项和其ID的映射关系,另外BSBI的倒排记录表是排序过的,而SPIMI没有排序。

  • 优点:
    • 不需要排序操作,处理速度更快
    • 保留了倒排记录表对词项的归属关系,节约内存
  • 时间复杂度:SPIMI 算法的时间复杂度是 Θ(T),这是因为它不需要对词项-文档 ID 对进行排序操作, 所有操作最多和文档集大小成线性关系。

📚分布式索引构建方法

  • 实际中,文档集通常都很大。尤其是Web搜索引擎,Web搜索引擎通常使用分布式索引构建算法来构建索引,往往按照词项或文档进行分割后分布在多台计算机上。大部分搜索引擎更倾向于采用基于文档分割的索引。
  • 分布式索引构建方法是基于MapReduce。MapReduce中的Map阶段和Reduce阶段是将计算任务划分成子任务块,以便每个工作节点在短时间内快速处理。
  1. 大数据|MapReduce模型 | Hadoop MapReduce的基本工作原理

  2. 大数据 | 实验一:大数据系统基本实验 | MapReduce 初级编程

  3. 大数据 | 实验二:文档倒排索引算法实现

  • MapReduce的Map阶段将输入的数据片映射成键-值对即(词项ID,文档ID),这个map阶段对应于BSBI和SPIMI算法中的分析任务,因此也将执行map过程的机器称为分析器(parse),每个分析器将输出结果存在本地的中间文件。
  • 在reduce阶段,我们将同一个键(词项ID)的所有值(文档ID)集中存储,以便快速读取和处理。

参考博客:

  • 信息检索导论第四章-索引构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1100948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium Vue(二)— 基础配置

1. 修改默认配置 设置cesium token // 设置cesium token 官网上申请 Cesium.Ion.defaultAccessToken "token";设置默认视角 //设置默认视角 Cesium.Camera.DEFAULT_VIEW_RECTANGLE Cesium.Rectangle.fromDegrees(// 西边的经度89.5,// 南边维度20.4,// 东边经度1…

手把手 java springboot 整合 JUnit进行单元测试

首先 我们在pom.xml中注入JUnit工具 <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.1</version><scope>test</scope> </dependency>然后 我们顺便找…

DM工作笔记-DATEADD(指定日期添加n个时间段)函数和其他时间函数

达梦官方文档已经说得很清楚了&#xff0c;在此仅记录下笔记&#xff0c;方便以后进行查阅。 DATEADD对应的相关文档如下&#xff1a; 这里说明下CREATE_TIME是TIMESTAMP类型。 如下例子&#xff1a; select CREATE_TIME from TEST_TABLE 运行截图如下&#xff1a; 现在有个…

企业数字化转型建设过程中需要哪些能力?

企业数字化转型是一个全面的过程&#xff0c;涉及利用数字技术和战略从根本上改变组织的运营方式和为客户提供价值的方式。为了成功进行这一转型&#xff0c;需要几个关键能力&#xff1a; 1.愿景和领导力&#xff1a;清晰的愿景和强有力的领导力对于指导转型至关重要。领导层…

CV计算机视觉每日开源代码Paper with code速览-2023.10.16

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Rank-DETR for High Quality Object Detecti…

.NET 8使用牛逼的AOT发布ASP.NET Core应用

简介 .NET AOT编译是一种.NET运行时的编译方式&#xff0c;它与传统的JIT编译方式不同。在传统的JIT编译中&#xff0c;.NET应用程序的代码在运行时才会被编译成本地机器码&#xff0c;而在AOT编译中&#xff0c;代码在运行之前就被提前编译成本地机器码。这样可以在代码运行的…

暴露你系统安全的黑暗角落:常见端口漏洞大合集!

目录 前言 一、远程管理端口 1.22 端口&#xff08;SSH&#xff09; 2.23 端口&#xff08;Telnet&#xff09; 3.3389 端口&#xff08;RDP&#xff09; 4.5632 端口&#xff08;Pcanywhere&#xff09; 5.5900 端口&#xff08;VNC&#xff09; 二、Web中间件/服务端口 6.109…

构建强大监控系统:使用Linux Zabbix和cpolar实现远程访问

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 目录 1. Linux 局域网访问Zabbix 2. Linux 安装cpolar 3. 配置Zabbix公网访问地址 4. 公网远程访问Zabbix 5. …

基于Java的健身运动网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

SQL sever中的触发器

目录 一、触发器概念 二、触发器优缺点 2.1优点&#xff1a; 2.2缺点&#xff1a; 三、触发器种类 四、触发器创建 4.1创建DML触发器 4.2创建DDL触发器 4.3创建登录触发器 五、触发器管理 5.1查看触发器 5.1.1.使用sp_helptext存储过程查看触发器 5.1.2.获取数据库…

367. 有效的完全平方数

367. 有效的完全平方数 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;1. 二分查找2. 使用内置的库函数3. 暴力遍历4. 牛顿迭代 原题链接&#xff1a; 367. 有效的完全平方数 https://leetcode.cn/problems/valid-perfect-square/submi…

八、添加和风天气插件

简介 给个人首页简介添加一个查看天气的免费功能插件 和风天气插件。⭐️ 欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件&#xff1a;index.html、First.vue 、App.vue 一、注册账号 登录和风天气官网&#xff0c;注册个人账号 和风天气官网 选择你想要的插件…

idea不识别yaml文件导致,配置文件点击跳转不了类

文章目录 场景确认的idea安装了ymal插件,确认你的配置文件是yml格式的还是ymal格式的然后在项目配置中看看是否有对应的后缀.最后看看在项目模块里面有没有spring模块跟对应的配置文件,如果没有就要添加这样点击配置文件就能跳转到对应的实体类了 场景 在使用idea时&#xff0…

百题千解计划【CSDN每日一练】LLM大语言模型:必练选择题及解析 | “等差数列”多解法:Python、Java、C语言、C++...

月落乌啼霜满天,江枫渔火对愁眠。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工智能领域优质创作者🏆 📝[5] …

面试题:当你的JVM 堆内存溢出后,其他线程是否可继续工作?

最近网上出现一个美团面试题&#xff1a;“一个线程OOM后&#xff0c;其他线程还能运行吗&#xff1f;” 我看网上出现了很多不靠谱的答案。这道题其实很有难度&#xff0c;涉及的知识点有jvm内存分配、作用域、gc等&#xff0c;不是简单的是与否的问题。 由于题目中给出的OO…

【黑马程序员】机器学习

&#xff08;一&#xff09;机器学习概述 一、机器学习算法分类 1、监督学习&#xff1a; &#xff08;1&#xff09;目标值是类别&#xff1a;分类问题 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归 &#xff08;2&#xff09;目标值是连续型的数据&#xff1a;回归…

【吞噬星空】爽翻,徐欣喜提永恒之体,罗峰秒杀败类,阿特金磕头认错

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 吞噬星空动画第89集终于更新了&#xff0c;阿特金三大巨头的好日子到头了&#xff0c;从他们对徐欣出手的那一刻&#xff0c;就已经有取死之道。如今罗峰强势回归&#xff0c;上演复仇戏码&#xff0c;让大家看…

故障诊断实验台 | PT500mini轴承齿轮箱转子故障实验台

故障诊断实验台 | PT500mini轴承齿轮箱转子故障实验台 1 实验台简介2 实验台功能3 实验台技术清单4 价格 很多同学因为实验数据而被困扰&#xff0c;目前数据来源有3方面&#xff0c;公开实验数据集、校企合作项目实际数据、自制实验台数据。 公开实验数据集被用烂了&#xff0…

2023年中国铝压延产量、销售收入及市场规模分析[图]

铝压延加工业是将电解铝&#xff08;主要是铝锭&#xff09;通过熔铸、轧制或挤压、表面处理等多种工艺及流程生产出各种铝材的过程。铝材按照加工工艺的不同又可以分为铝轧制材和铝挤压材。 2018-2022年中国铝材产量累计值及增速 资料来源&#xff1a;共研产业咨询&#xff0…

PC网站支付宝扫码登录

1.电脑网站支付宝登录&#xff0c;拼接授权链接&#xff0c;在浏览器上访问授权链接即可登录 - 支付宝欢迎登录支付宝&#xff0c;支付宝-全球领先的独立第三方支付平台&#xff0c;致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验以及转账收款/水电煤…