当前位置: 首页 > java >正文

倒排索引与数据库索引

数据库索引

mysql索引以B+树作为存储结构,B+树的主要特点是,非叶子节点不存储数据,数据只存储在叶子节点上,并且所有叶子节点组成有序链表

主键索引(聚簇索引)

假设我们的表结构如下

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(20) DEFAULT NULL COMMENT '名称',`bank_no` varchar(20) DEFAULT NULL COMMENT '银行卡号',`hobby` varchar(20) DEFAULT NULL COMMENT '兴趣爱好',PRIMARY KEY (`id`),UNIQUE KEY `user_bank_no` (`bank_no`,`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

数据库主键索引对应的文档存储的表内容可表示为:

DocumentIdnamebank_nohobby
1鲁智深6201篮球、唱歌
200吴用5100篮球、旅游
3000花荣1234台球、旅游
5000柴进2245唱歌、游泳
5001武松5678篮球、游泳
5200杨志1345游泳、台球
8000宋江9987唱歌
10000卢俊义3347足球、旅游

主键索引的存储结构如下


图:主键索引存储结构
非主键索引

非主键索引存储结构



非主键索引的叶子节点只存储索引字段及主键,如果需要索引字段之外的信息,则需要根据主键再回表查询。
比如我们按照银行卡号查询用户名、兴趣爱好等字段,则会根据索引过滤后再回表查询完整信息,被称为是索引下推。

倒排索引

数据库索引是一种正排索引,上面的例子中,如果查询兴趣爱好为“游泳”的用户信息,则会触发全表扫描。这种情况下创建全文索引可很大程度的提高查询效率,而全文索引(full inverted index )就一种倒排索引(inverted file index )的实现。

如果是倒排索引,则文档存储的表内容可表示为:

NumbertextDocuments
1篮球1,200,5001
2唱歌1, 5000, 8000
3旅游200, 3000, 10000
4台球3000, 5200
5游泳5000, 5200
6足球10000

全文索引不仅可以存储文档的ID,还可以存储单词在text的位置信息(position)

NumbertextDocuments[(DocumentId: position)]
1篮球(1: 1),(200: 1), (5001: 1)
2唱歌(1: 2), (5000: 1), (8000: 1)
3旅游(200: 2), (3000: 2), (10000: 2)
4台球(3000: 1), (5200: 2)
5游泳(5000: 2), (5200: 1)
6足球(10000: 1)

最后,倒排索引作为一种索引结构,可以更好的定位数据,并能扩充一些搜索特性,但是也会占用更多的磁盘空间。



喜欢的朋友记得点赞、收藏、关注哦!!!

http://www.xdnf.cn/news/3595.html

相关文章:

  • 拆解一个550-800Mhz的LC滤波器内部大图配测试曲线
  • 这款软件的第三方评测:功能、易用性与性能表现如何?
  • 链表系列一> K 个一组翻转链表
  • wsl安装
  • 自动化测试项目2 --- 比特纵横 [软件测试实战 Java 篇]
  • 泰迪杯特等奖案例学习资料:基于时空图卷积网络的结构健康监测数据异常识别系统
  • OrbitControls
  • 【学习笔记】第十章:序列建模:递归神经网络(RNN)
  • k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)
  • Python 数据智能实战 (8):基于LLM的个性化营销文案
  • Redis基本使用
  • 线程池实现
  • 03 - spring security自定义登出页面
  • 学习c语言的第16天
  • 用c 编写的笔记搜索程序
  • 每天学一个 Linux 命令(33):uniq
  • DarkGS:论文解读与全流程环境配置及数据集测试【基于Ubuntu20.04 】【2025最新实战无坑版!!】
  • Linux工作台文件操作命令全流程解析
  • mescroll.js 是在 H5端 运行的下拉刷新和上拉加载插件
  • 网络编程——Socket 编程详解(TCP / UDP)
  • C++拷贝构造函数详解
  • 使用 Mermaid 在 Markdown 中绘制图表
  • 数字智慧方案6213丨智慧园区规划方案(63页PPT)(文末有下载方式)
  • AI大模型-解决开发环境配置不足问题
  • 【AIStarter苹果版发布】黑苹果部署教程+跨平台AI应用测试指南
  • HCL(HashiCorp Configuration Language)是一种结构化配置语言
  • 13.多边形的三角剖分 (Triangulation) : Triangulation
  • 我的日记杂文
  • 中小企业MES系统详细设计
  • Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]