资讯专栏INFORMATION COLUMN

3分钟干货之正排索引与倒排索引

PiscesYE / 2867人阅读

摘要:什么是倒排索引与正排索引相反,由查询的过程,使用倒排索引。分词后倒排索引我爱北京到家美好由检索词快速找到包含这个查询词的网页就是倒排索引。

△什么是正排索引(forward index)?
简言之,由key查询实体的过程,使用正排索引。

例如,用户表:
t_user(uid, name, passwd, age, sex)
由uid查询整行的过程,就时正排索引查询。

又例如,网页库:
t_web_page(url, page_content)
由url查询整个网页的过程,也是正排索引查询。

网页内容分词后,page_content会对应一个分词后的集合list。
简易的,正排索引可以理解为:
Map>
能够由网页url快速找到内容的一个数据结构。
画外音:时间复杂度可以认为是O(1)。

△什么是倒排索引(inverted index)?
与正排索引相反,由item查询key的过程,使用倒排索引。

对于网页搜索,倒排索引可以理解为:
Map>
能够由查询词快速找到包含这个查询词的网页的数据结构。
画外音:时间复杂度也是O(1)。

举个例子,假设有3个网页:
url1 -> “我爱北京”
url2 -> “我爱到家”
url3 -> “到家美好”
这是一个正排索引:
Map。

分词之后:
url1 -> {我,爱,北京}
url2 -> {我,爱,到家}
url3 -> {到家,美好}
这是一个分词后的正排索引:
Map>。

分词后倒排索引:
我 -> {url1, url2}
爱 -> {url1, url2}
北京 -> {url1}
到家 -> {url2, url3}
美好 -> {url3}
由检索词item快速找到包含这个查询词的网页Map>就是倒排索引。
画外音:明白了吧,词到url的过程,是倒排索引。

正排索引和倒排索引是spider和build_index系统提前建立好的数据结构,为什么要使用这两种数据结构,是因为它能够快速的实现“用户网页检索”需求。
画外音,业务需求决定架构实现,查询起来都很快。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74218.html

相关文章

  • 超大规模检索中的索引设计

    摘要:所有的倒排索引都是基于正排数据构建的。数据规模的难题节中描述的拆表的方式,本质上是将多个数值型拆成了多个插入记录,然后再建立倒排索引。 超大规模检索中的索引设计 一 问题背景 1.1 业务背景 精准广告场景中,人群定向的常用方法是:根据各种不同的规则,将每一个用户(User)打上丰富的标签。与此同时,广告主(Member)在根据规则圈选投放人群时,系统也会将广告(Ad)打上各种的标...

    Carl 评论0 收藏0
  • Lucene构建个人搜索引擎解析

    摘要:倒排索引是基于词的搜索。关于倒排索引要学习搜索引擎,就需要了解倒排索引,要更加深刻地理解倒排索引,就要先了解什么是正排索引表。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。 Lucene是什么? Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引...

    wenshi11019 评论0 收藏0
  • Lucene解析 - 基本概念

    摘要:基本概念在深入解读之前,先了解下的几个基本概念,以及这几个概念背后隐藏的一些东西。如图是一个内的基本组成,内数据只是一个抽象表示,不代表其内部真实数据结构。即词典,是根据条件查找的基本索引。 前言 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎,提供了强大的数据检索能力。Lucene已经发展了很多年,其功能越来越强大,架构也越来越精细。它目前不仅仅能支持全文索引,也...

    sunnyxd 评论0 收藏0

发表评论

0条评论

PiscesYE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<