倒排索引

倒排索引

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9zczEuYmRzdGF0aWMuY29tLzcwY0Z2WFNoX1ExWW54R2twb1dLMUhGNmhoeS9pdC91PTIwMzYwMDMyNiw0MjUwNDE4OTc5JmZtPTI3JmdwPTAuanBn?x-oss-process=image/format,png)

因为热爱,所以拼搏。 –RuiDer


前导必备

  • Java基础
  • 数据库

正常索引使用

比如一张数据库表table,有id和content两个字段,表中数据如下:
		id        content
		1          abc
		2           fg
		3          ahu
		4          bgf
使用id=2进行索引查找fg。
select from table where id=2;
即可查询到相应的值。

问题

现在我们可以根据数据库表中的id可以查询对应的值,但是有一些问题,
当我们想要查询fg值的id是多少或者我们想要知道哪些conten中含有a(或者b)。
这就是我们日常生活中经常使用的一个算法:当你搜索一首歌时,你可以不知道它的全名,
但是当你输入其中一部分文字时,音乐平台会自动提示或者推荐了一些相似的歌名。

解决问题的算法-----倒排索引算法

思路:(通俗的理解)
		上述中的表table:
			   id        content
				1          abc
				2           fg
				3          ahu
				4          bgf
		我们的目的:通过content值或者content值中的某个字母查找对应的id
		我们是不是可以根据上述的表table模拟出为下面的表table1:
				content     id
					a       1,3
					b       1,4
					c       1
					f       2,4
					g       2,4
					h       3
		模拟分析:新建表是按照字母作为索引进行新建,将之前table中的content值按照content值中含有的字母进行分类,比如
		第一个content索引值为a,之前的table表中含有a的content
有id=1(abc),id=3(ahu)。

这就是倒排索引算法的思路。

倒排索引

倒排索引也叫反向索引,倒序索引。

倒排索引的使用场景

  • 全局搜索:比如在整个数据库中查找单词word
  • 模糊查询
  • 关键字查询

About Me

我的博客

我的GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值