正排索引与倒排索引应用场景

正排索引

概念

正排表是以文档的ID为key,表中记录文档中每个关键字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。

特点

这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;

因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。

若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除。

但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。

倒排索引

概念

倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,

一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。

特点

每个字或词对应的文档数量在动态变化,所以倒排表的建立和维护都较为复杂,

但是在查询的时候由于可以一次得到查询关键字所对应的所有文档,所以效率高于正排表。

在全文检索中,检索的快速响应是一个最为关键的性能,而索引建立由于在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率。

示例:

假设对象为商品,特征为关键词。下面举例说明一下什么是正排索引,什么是倒排索引。
对于每个商品,我们将它的标题和描述进行分词,然后可以建立如下正排索引(key是商品id,value是该商品的各个关键词的出现次数和出现位置):

商品1 -> [(关键词1,出现3次,位置为1,3,5), (关键词2,出现2次,位置为2,6), (关键词4,出现1次,位置为10), …]
商品2 -> [(关键词1,出现1次,位置为1), (关键词3,出现4次,位置为2,4,7,9), …]
商品3 -> [(关键词2,出现2次,位置为1,4), (关键词4,出现3次,位置为2,7,10), …]
商品4 -> [(关键词5,出现1次,位置为1), (关键词6,出现1次,位置为2), …]

同时我们也可以建立如下倒排索引(key是关键词,value是包含该关键词的商品id列表):

关键词1 -> [商品1,商品2]
关键词2 -> [商品1,商品3]
关键词3 -> [商品2]
关键词4 -> [商品1,商品3]
关键词5 -> [商品4]
关键词6 -> [商品4]

用户搜索商品这个场景中,搜索引擎会做这么几个事情:

①将用户输入的文字进行分词,比如说得到[关键词1,关键词4];
②对于关键词1,根据倒排索引,发现命中[商品1,商品2];
③对于关键词4,根据倒排索引,发现命中[商品1,商品3];
④那么符合条件的商品就包括[商品1,商品2,商品3],下面就需要使用正排索引来对它们进行排序,我们简单定义一下匹配度计算公式为目标关键词出现次数的总和(当然真实商业场景不可能只有匹配度这么一个维度这么简单粗暴。可能要关联数十上百个正排索引,比如匹配度、热度、好评率、给我们广告费非的多少等等很多指标综合决定);
⑤对于商品1,使用正排索引计算得到匹配度为3+1=4;
⑥对于商品2,使用正排索引计算得到匹配度为1;
⑦对于商品3,使用正排索引计算得到匹配度为3;
⑧根据匹配度从高到低,最终搜索的排序结果为:[商品1,商品3,商品2]

因此总的来说倒排索引用于召回,从茫茫海洋中把所有符合条件的对象搜索出来;正排索引用于排序,把最符合搜索结果、对用户(或者是商家 or 平台)价值最高的对象放到首位。

注:

其中词典结构尤为重要,有很多种词典结构,各有各的优缺点,最简单如排序数组,通过二分查找来检索数据,更快的有哈希表,磁盘查找有B树、B+树,但一个能支持TB级数据的倒排索引结构需要在时间和空间上有个平衡,下图列了一些常见词典的优缺点:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345