正排索引和倒排索引理解详解
- 一、正排索引
- 二、 倒排索引
- 三、为什么搜索引擎选用倒排索引?
- 四、倒排索引优点
- 五、小结
一、正排索引
蜘蛛爬虫经过文字提取、中文分词、去重等操作后,得到的就是独特的、能反应页面的主题内容、以词为单位的字符串。接下来搜索引擎索引程序就可以提取关键词了,为该页面建立与关键词的对应关系
,而这个过程就叫做正排索引
。
1.正排索引: 由文档指向关键词
文档--> 单词1 ,单词2
单词1 出现的次数 单词出现的位置; 单词2 单词2出现的位置 ...
正排索引:在搜索栏输入id查词条
(已知id)
二、 倒排索引
当用户在搜索引擎搜索框中输入关键词
的时候,搜索引擎就会把和关键词有关的页面展现
给用户,而这个过程就叫做倒排索引
。
2.倒排索引: 由关键词指向文档
单词1--->文档1,文档2,文档3
单词2--->文档1,文档2
倒排索引:
将搜索框中的词进行搜索查到哪些id包含这个词,在查这些id,找到词条
(通过分词查出id)
三、为什么搜索引擎选用倒排索引?
正排索引是不能直接用于排名的,如果只存在正排索引,排名程序需要扫描所有索引库中的文件,找出包含这个关键词的文件,在进行相关性的计算。这样就不能实时返回排名结果。
所以,搜索引擎会将正排索引数据库重新构造为倒排索引
,把页面对应到关键词的关系表,转化为关键词对应的页面。
这样,当用户搜索某个关键词的时候,排名程序在倒排索引中定位这个关键词,就可以马上找到所有包含这个关键词的页面。
四、倒排索引优点
(1)不需要锁,提升并发能力,避免锁的问题。
(2)数据不变,一直保存在os cache中,只要cache内存足够。
(3)filter cache一直驻留在内存,因为数据不变。
(4)便于数据压缩,可以大幅度提高压缩率,节省cpu和io开销。
(5)在处理复杂的多关键字查询时,可在倒排表中先完成查询的并、交等逻辑运算,得到结果后再对记录进行存取,这样把对文档的查询转换为地址集合的运算,从而提高查找速度。
五、小结
正排索引和倒排索引的区别简单记为:
正排索引:文档 ---> 单词
倒排索引:单词 ---> 文档
倒排索引有着广泛的应用场景,比如:
搜索引擎、大规模数据库索引、文档检索、多媒体检索/信息检索领域等等。
总之,倒排索引在检索领域是很重要的一种索引机制。
Ending!