博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解正向索引
阅读量:6501 次
发布时间:2019-06-24

本文共 1077 字,大约阅读时间需要 3 分钟。

倒排索引也叫做反向索引(inverted单词也有反转的意思,只不过大家喜欢翻译成倒排索引)。

倒排索引在搜索引擎中经常用到,倒排索引也叫做反向索引。某天在想,为什么叫做倒排索引呢?倒过来的,反转过来的。那么,非倒排索引是什么样子的。解释一大堆。云里雾里。

后来知道,反向索引是相对正向索引而言的,那什么是正向索引?我想,了解了正向索引,就能知道反向索引的产生背景了。

 

下面是网上一些资料说法:

 

每个文件都对应一个文件ID,文件内容被表示为一串关键词的*。实际上在搜索引擎索引库中,关键词也已经转换为关键词ID。这样的数据结构就称为正向索引

倒排索引正向索引还不能直接用于排名。假设用户搜索关键词2,如果只存在正向索引的话,排名程序需要扫描所有索引库中的文件,找出包含关键词2 的文件(索引文件),再进行相关性计算。这样的计算量无法满足实时返回排名结果的要求。
所以搜索引擎会将正向索引数据库重新构造为倒排索引,把文件对应到关键词的映射转换为关键词到文件的映射,每个关键词都对应着一系列文件,这些文件中都出现了这个关键词。

 

搜索引擎工作原理之预处理

预处理总共分为几个步骤:1.、2.、3.、4.、5.、6.、7.、8.、9.

 

 

上面说法感觉不是很明白。现在整理一下自己的理解

 

为每篇文档生成一个关键词集合,也就是提取这篇文档中的所有关词

比如文档1

经过分词,提取文档1中出现的关键词有20个

 

这个20个关键词集合起来,每个关键词都会顺便记录它出现在文档的位置,出现的次数等信息

正向索引的结构像下面这样子的:

 

文档编号1  此文档中出现的关键词列表(单词1,出现位置,出现次数;单词2,出现位置,出现次数………..)

文档编号2  此文档中出现的关键词列表

 

这是正向索引。

如果要搜索关键词”单词1”,则去正向索引可以直接查出来哪些文档包含了单词1。正向索引还是需要遍历扫描(扫描所有正向索引文件才知道哪些文档带有某个关键词),性能比较慢。

 

顿时明白了某个资料中提到这句话:实际上,时间、、等等资源的限制,技术上正向索引是不能实现的。

 

跟正向索引相比,反向索引就是反过来。怎么个反过来法呢?

 

左边是关键词,右边是文档编号,如下:

 

关键词1   带有此关键词的文档编号1,文档编号2….

关键词2   带有此关键词的文档编号1,文档编号2….

 

 

很多介绍太学术化了,即便是做技术开发的,没有实际应用过,一时难以理解。

作为初级阶段的理解,并不完善,有错误才会加深理解。期待以后完善,欢迎指正。大部分介绍都是图的形式,有机会我想看看索引的代码实现层面,也许能够加深理解。

转载地址:http://duvyo.baihongyu.com/

你可能感兴趣的文章
concurrent包的实现示意图
查看>>
golang os.Args
查看>>
Linux常用命令
查看>>
spring-data-elasticsearch 概述及入门(二)
查看>>
Solr启动和结束命令
查看>>
1.12 xshell密钥认证
查看>>
3.2 用户组管理
查看>>
VMware虚拟机出现“需要整合虚拟机磁盘”的解决方法
查看>>
ibatis 动态查询
查看>>
汇编语言之实验一
查看>>
git 调用 Beyond Compare
查看>>
SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
查看>>
android实现图片识别的几种方法
查看>>
mvc学习地址
查看>>
masonry 基本用法
查看>>
使用openssl创建自签名证书及部署到IIS教程
查看>>
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
关于网站的一些js和css常见问题的记录
查看>>
zabbix-3.4 触发器
查看>>