正排索引和倒排索引

一、简介

正排索引:一个未经处理的数据库中,一般是以文档ID作为索引,以文档内容作为记录。
倒排索引:Inverted index,指的是将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过单词或记录查找到其所在的文档。

二、倒排索引

创建倒排索引,分为以下几步。

2.1 形成文档列表

lucene首先对原始文档数据进行编号(DocID),形成列表,就是一个文档列表

2.2 创建倒排索引列表

对文档中数据进行分词,得到词条。对词条进行编号,以词条创建索引。保存包含这些词条的文档的编号信息。

例如 谷歌之父–> 谷歌、之父

2.3 搜索的过程

  1. 当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条;
  2. 拿着这些词条去倒排索引列表中进行匹配;
  3. 找到这些词条就能找到包含这些词条的所有文档的编号;
  4. 根据这些编号去文档列表中找到文档。

2.4 使用场景

solr和elastic search

三、正排索引

正排表是以文档的ID为关键字,表中记录文档中每个 项 的位置信息,查找时扫描表中每个文档的信息直到找出所有包含查询关键字的文档。

因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。

若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。

尽管正排表的工作原理非常的简单,但是由于其检索效率太低,除非在特定情况下,否则实用性价值不大。

文档编号(id)文档内容
1我喜欢数学
2我喜欢编程
3我考试数学成绩很好

使用场景

mysql和postgresql

优化

在我们关系型库中索引为了兼顾插入和查询的性能,都采用了排序树例如:B-Tree/B+Tree这样的数据结构来存储索引。

四、正向和倒排对比

概念区别

  • 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程

  • 倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程

优缺点

正向索引

  • 优点:
    • 可以给多个字段创建索引
    • 根据索引字段搜索、排序速度非常快
  • 缺点:
    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引

  • 优点:
    • 根据词条搜索、模糊搜索时,速度非常快
  • 缺点:
    • 只能给词条创建索引,而不是字段
    • 无法根据字段做排序

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

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

相关文章

深入理解Java异常:检查型与非检查型异常的区别与实践

目录 一、Java异常的基本概念 二、检查型异常与非检查型异常的区别 1. 检查型异常(Checked Exception) 2. 非检查型异常(Unchecked Exception) 三、检查型与非检查型异常的代码示例 1. 检查型异常示例 2. 非检查型异常示例…

C++初始化成员列表

1.介绍: 初始化成员列表是 C 中的一种构造函数语法,允许在对象构造时直接初始化类的成员变量,而不是先默认初始化再赋值 2.用法: ClassName(参数列表) : 成员1(参数1), 成员2(参数2), ... {// 构造函数体 }(1&#…

Django一分钟:django中收集关联对象关联数据的方法

场景:我有一个模型,被其它多个模型关联,我配置了CASCADE级联删除,我想要告知用户删除该实例之后,哪些关联数据将会被一同删除。 假设我们当前有这样一组模型: class Warehouse(models.Model):""…

统计班级中的说谎者(字节青训)

题目 班里有 N 个学生&#xff0c;第 i 个学生的分数是 A_i。当且仅当分数 < A_i 的学生数量多于分数比他高的数量时&#xff0c;第 i 个学生会说谎。求出有多少学生会说谎。 输入格式 输入 N 学生的成绩&#xff0c;包含 A_1, A_2, ..., A_N 输出格式 对于每组数据&am…

卷积神经网络各层介绍

目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU&#xff08;Rectified Linear Unit&#xff09; 3.2 sigmoid 3.3 tanh&#xff08;双曲正切&#xff09; 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核&#xff08;滤波器&#xff09;对矩阵进…

【工控】线扫相机小结 第四篇

背景 这一片主要是对第三篇继续补充。话说上一篇讲到了两种模式的切换&#xff0c;上一篇还遗留了一个Bug&#xff0c;在这一篇里进行订正&#xff01; 代码回顾 /// <summary>/// 其实就是打开触发/// </summary>void SetLineSacanWorkMode(){-----首先设置为帧…

MySql面试题.运维面试题之五

《(全国)MySQL数据库DBA测试题-第1套》 卷面总分 题号 单选题 多选题 判断题 100 题分 42 40 18 得分 一、单选题(每题3分,共计42分;得分____) 1. 二进制rpm包安装的mysql数据库,默认的数据文件存放在如下哪个目录里? A、/usr/local/mysql B、/tmp/ C、/var/lib/my…

AI 大模型重塑软件开发的未来

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【软考】系统架构设计师-计算机系统基础(4):计算机网络

计算机网络功能&#xff1a;数据通信、资源共享、管理集中化、分布式处理、负载均衡 5G高峰速率&#xff1a;10Gbit/s 广域网&#xff08;因特网&#xff09;/城域网/局域网&#xff08;以太网&#xff09; 总线型&#xff1a;利用率低&#xff0c;易冲突&#xff0c;干扰大…

Ultiverse 和web3新玩法?AI和GameFi的结合是怎样

Gamef 和 AI 是我们这个周期十分看好两大赛道之一&#xff0c;(Gamef 拥有极强的破圈效应&#xff0c;引领 Web2 用户进军 Web3 最佳利器。AI是这个周期最热门赛道&#xff0c;无论 Web2的 OpenAl&#xff0c;还是 Web3&#xff0c;都成为话题热议焦点。那么结合 GamefiA1双叙事…

Matlab多输入单输出之倾斜手写数字识别

本文主要介绍使用matlab构建多输入单输出的网络架构&#xff0c;来实现倾斜的手写数字识别&#xff0c;使用concatenationLayer来拼接特征&#xff0c;实现网络输入多个特征。 1.加载训练数据 加载数据&#xff1a;手写数字的图像、真实数字标签和数字顺时针旋转的角度。 lo…

R | 统一栅格数据的坐标系、分辨率和行列号

各位同学&#xff0c;在做相关性等分析时&#xff0c;经常会遇到各栅格数据间的行列号不统一等问题&#xff0c;下面的代码能直接解决这类麻烦。以某个栅格数据的坐标系、分辨率和行列号为准&#xff0c;统一文件夹内所有栅格并输出到新的文件夹。 代码只需要更改输入输出和ti…

分布式缓存 + 数据存储 + 消息队列知识体系

文章目录 1. 分布式缓存的原理和技术2. 数据存储3. 数据的备份、恢复、迁移4. 项目案例分析5. 消息队列的原理和技术6. 消息队列的高级特性7. 项目案例分析 1. 分布式缓存的原理和技术 分布式缓存&#xff1a;分布式缓存是一种将数据存储在网络中的多个节点上的技术&#xff0c…

Nginx配置多前端,页面刷新404

nginx配置前端页面使用如下 location / {root /usr/share/nginx/html/zhtj;index index.html index.htm;} 但是这种页面刷新时候会显示404&#xff0c;解决办法如下 location / {root /usr/share/nginx/html/zhtj;index index.html index.htm;try_files $uri $uri/ /ind…

UE5 第一人称射击项目学习(完结)

这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图&#xff0c;这里要引入C的面向对象思想&#xff0c;建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…

【前端知识】简单讲讲什么是微前端

微前端介绍 一、定义二、背景三、核心思想四、基本要素五、核心价值六、实现方式七、应用场景八、挑战与解决方案 什么是single-spa一、核心特点二、核心原理三、应用加载流程四、最佳实践五、优缺点六、应用场景 什么是 qiankun一、概述二、特点与优势三、核心功能四、使用场景…

三相正弦交流电的相序:揭秘正相序与反相序的奥秘

在电力系统中&#xff0c;三相正弦交流电的应用无处不在&#xff0c;从家庭用电到大型工业设备&#xff0c;都离不开它的稳定供电。然而&#xff0c;在三相交流电中&#xff0c;有一个概念常常让初学者感到困惑&#xff0c;那就是“相序”。今天&#xff0c;我们就来深入探讨一…

力扣面试题 - 24 插入

题目&#xff1a; 给定两个整型数字 N 与 M&#xff0c;以及表示比特位置的 i 与 j&#xff08;i < j&#xff0c;且从 0 位开始计算&#xff09;。 编写一种方法&#xff0c;使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域&#xff0c;不足之处用 0 补齐…

C07.L07.STL之映射.应用2.统计数字

题目描述 某次科研调查时得到了 n 个自然数&#xff0c;每个数均不超过 1500000000 (1.5*10^9 )。已知不相同的数不超过 10000 个&#xff0c;现在需要统计这些自然数各自出现的次数&#xff0c;并按照自然数从小到大的顺序输出统计结果。 输入格式 包含 2 行&#xff1a; 第…

华为云容器监控平台

首先搜索CCE,点击云容器引擎CCE 有不同的测试&#xff0c;生产&#xff0c;正式环境 工作负载--直接查询服务名看监控 数据库都是走的一个 Redis的查看