搜索 正排索引 和 倒排索引 区别

本文介绍了正排索引与倒排索引的概念及其应用。正排索引通过键查询实体,如通过用户ID查找用户信息;而倒排索引则用于从项查询键,例如搜索引擎中通过关键词快速定位含有该词的网页。两者都能实现快速检索的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是正排索引(forward index)

简言之,由key查询实体的过程,使用正排索引。

例如,用户表:

t_user(uid, name, passwd, age, sex)

uid查询整行的过程,就是正排索引查询

画外音:时间复杂度可以认为是O(1)。

二、什么是倒排索引(inverted index)

与正排索引相反,由item查询key的过程,使用倒排索引。

对于网页搜索,倒排索引可以理解为:

Map<item, list<url>>

能够由查询词快速找到包含这个查询词的网页的数据结构。

画外音:时间复杂度也是O(1)。

举个例子,假设有3个网页:

url1 -> “我爱北京”

url2 -> “我爱到家”

url3 -> “到家美好”

这是一个正排索引:

Map<url, page_content>。

分词之后:

url1 -> {我,爱,北京}

url2 -> {我,爱,到家}

url3 -> {到家,美好}

这是一个分词后的正排索引:

Map<url, list<item>>。

分词后倒排索引:

我 -> {url1, url2}

爱 -> {url1, url2}

北京 -> {url1}

到家 -> {url2, url3}

美好 -> {url3}

由检索词item快速找到包含这个查询词的网页Map<item, list<url>>就是倒排索引

画外音:明白了吧,词到url的过程,是倒排索引

正排索引和倒排索引是spider和build_index系统提前建立好的数据结构,为什么要使用这两种数据结构,是因为它能够快速的实现“用户网页检索”需求。

画外音,业务需求决定架构实现,查询起来都很快。

每秒10W次分词搜索,产品经理又提了一个需求!!!(收藏)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值