倒排索引Inverted index
倒排索引
Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
正排索引与倒排索引
什么是正排索引(forward index)?
由key查询实体的过程,是正排索引.
在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID。简单的,正排索引可以理解为(文件内容会对应一个分词后的集合list<< item >>) Map< id,list< item>>,能够由id快速(时间复杂度O(1))找到内容的一个数据结构。
什么是倒排索引(inverted index)?
由item查询key的过程,是倒排索引。
倒排索引可以理解为Map< item, list< id>>,能够由查询词快速(时间复杂度O(1))找到包含这个查询词的文件的数据结构。
举例:
文档编号(id) | 文档内容 |
---|---|
1 | 我喜欢数学 |
2 | 我喜欢编程 |
3 | 我考试数学成绩很好 |
4 | 编程太难了 |
分词之后的正排索引Map< id, list< item>>
文档编号(id) | 分词后的集合(list< item>) |
---|---|
1 | {我,喜欢,数学} |
2 | {我,喜欢,编程} |
3 | {我,考试,数学,成绩,很好} |
4 | {编程,太难了} |
分词后倒排索引
- 简单的倒排索引Map< item,list< id>>
编号 | 单词(item) | 倒排列表(list< id>) |
---|---|---|
1 | 我 | 1,2,3 |
2 | 喜欢 | 1,2 |
3 | 数学 | 1,3 |
4 | 编程 | 2,4 |
5 | 考试 | 3 |
6 | 成绩 | 3 |
7 | 很好 | 3 |
8 | 太难了 | 4 |
有单词频率信息(TF)的倒排索引Map< item,list< (id;TF)>>
例如,假设我们有两个文档,每个文档的 content
域包含如下内容:
- The quick brown fox jumped over the lazy dog
- Quick brown foxes leap over lazy dogs in summer
为了创建倒排索引,我们首先将每个文档的 content
域拆分成单独的 词(我们称它为 词条
或 tokens
),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。结果如下所示:
Term Doc_1 Doc_2
-------------------------
Quick | | X
The | X |
brown | X | X
dog | X |
dogs | | X
fox | X |
foxes | | X
in | | X
jumped | X |
lazy | X | X
leap | | X
over | X | X
quick | X |
summer | | X
the | X |
------------------------
现在,如果我们想搜索 quick brown
,我们只需要查找包含每个词条的文档:
Term Doc_1 Doc_2
-------------------------
brown | X | X
quick | X |
------------------------
Total | 2 | 1
两个文档都匹配,但是第一个文档比第二个匹配度更高。如果我们使用仅计算匹配词条数量的简单 相似性算法 ,那么,我们可以说,对于我们查询的相关性来讲,第一个文档比第二个文档更佳。
倒排索引Inverted index相关推荐
- 倒排索引 inverted index
2019独角兽企业重金招聘Python工程师标准>>> 1.什么是倒排索引. e>>>(⊙o⊙)- 这是我见过最垃圾的翻译了,完全让人误解他的意思. 这个名称很容易 ...
- MapReduce功能实现十---倒排索引(Inverted Index)
MapReduce功能实现系列: MapReduce功能实现一-Hbase和Hdfs之间数据相互转换 MapReduce功能实现二-排序 MapReduce功能实现 ...
- 正排索引(forward index)与倒排索引(inverted index)
一.正排索引(前向索引) 正排索引也称为"前向索引".它是创建倒排索引的基础,具有以下字段. (1)LocalId字段(表中简称"Lid"):表示一个文档的局部 ...
- python 倒排索引(Inverted Index)
倒排索引是一种检索方式,比如存入数据库的数据是存一篇文章进去,然而检索时我们经常需要通过关键词检索,所以提前做好倒排索引即可方便检索,而省略掉全表扫描的问题了,这是一种用空间换时间的方法. 使用字典构 ...
- ElasticSearch 学习笔记(一):倒排索引(Inverted index)
分析一个术语,要先从名称入手 倒排索引,英文原名Inverted index,大概因为 Invert 有颠倒的意思,就被翻译成了倒排.但是倒排这个名称很容易让人理解为从A-Z颠倒成Z-A.个人觉得翻译 ...
- 斯坦福NLP笔记72 —— The Inverted Index
2019独角兽企业重金招聘Python工程师标准>>> Inverted Index是信息抽取里最常用的数据结构,来看看他长啥样: Brutus指向数字X则代表X号文档中包含了Bru ...
- 【es】Elasticsearch:inverted index,doc_values及source
文章目录 1.概述 2.Inverted index 3.Source 4.Doc_values 1.概述 转载:https://www.cnblogs.com/sanduzxcvbnm/p/1208 ...
- 反向索引(Inverted Index)
转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...
- inverted index
Index是啥? 书后面的index实际上是inverted index,是用来查找的. 是一个词,出现在document的什么地方,page number.f(Word) returns a set ...
- Lucene Inverted index(倒排索引)原来快速入门
Lucene是一个高性能的JAVA全文检索工具包,它使用的是倒排文件索引结构.该结构及相应的生成算法如下: 设有两篇文章1和2: 文章1的内容为:Tom lives in Guangzhou, I l ...
最新文章
- 返还网 PK 返利网*2
- 计算机桌面颜色如何设置标准,电脑调整桌面颜色设置_电脑桌面颜色设置
- 如何学习挖掘漏洞[参考多方面资料]
- 康普在金色一号中心缔造光纤新历史
- 字节字符区别Java_【JAVA基础】字符数组与字节数组的区别
- 「PKUSC2018」神仙的游戏 - 题解
- 漫话:如何给女朋友解释为什么计算机从0开始计数,而不是从1开始?
- 20180513 实参 形参 数组
- IndexedDB 包装库 idb
- COSO企业风险管理综合框架主要关注8大层面的企业风险
- Could not enlist in transaction on entering meta-aware object!”
- 科比,老大1000天
- Latex Table 合并行/列详解
- Mac上重装PHP-7.3和apache-2.4.41
- C语言中的字符常量与变量
- 环球时报评出“影响新中国的60位外国人”
- AS:另一个程序正在使用此文件,进程无法访问。
- 【渝粤教育】电大中专计算机应用基础 (2)_1作业 题库
- 有什么好用的视频剪辑软件适合新人UP主
- 绕过Windows操作系统正版验证新方法