正排索引与倒排索引

正排索引与倒排索引

正排索引也叫正向索引(forward index),倒排索引也叫反向索引(inverted index)。他们都是搜广推经常用到的工具,用于记录海量 对象与特征 之间的关系,这里的对象可以是商品、店铺、广告,特征可以是关键词、标签等等。

假设对象为商品,特征为关键词。下面举例说明一下什么是正排索引,什么是倒排索引。
对于每个商品,我们将它的标题和描述进行分词,然后可以建立如下正排索引(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 平台)价值最高的对象放到首位。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值