广告布尔检索

广告检索

倒排索引是搜索引擎的关键技术,而广告的检索上也采用这样的框架。但是广告的检索问题也有一些自身的特点和需求,基本的倒排索引技术在广告检索中遇到了两个新问题。

  1. 广告的定向条件组 ,可以看成是一个由与或关系连接的布尔表达式,这样的文档显然与搜索引擎面对的 Bow 文档不太一样,这里存在着有针对性的检索性能优化空间。
  2. 在上下文关键词或用户标签比较丰富,广告检索中查询可能相当长,甚至会由上百个关键词组成,这种情况下的检索也与搜索引擎中主要由 1 ~ 4 个关键词组成的查询有很大区别。试想,如果将 100 个关键词同时输入到搜索框中,返回的结果会是你想要的吗?

布尔表达式的检索

广告检索与普通搜索引擎检索的第一不同是布尔表达式的检索问题。

如下图:有 7 条广告的定向条件。

注意:我需要将定向条件写成析取范式(Disjunctive Normal Form,DNF)的形式。

DNF 中有两个概念:

  • 每个 DNF 都可以分解为一个或者多个交接(conjunction)的
  • 每个交集又可以进一步分解为一个或多个赋值集(assignment)的

布尔表达式检索的问题有两个特点

  1. 当某次广告请求的定向标签满足某个 Conjunction 时,那么 Conjunction 包含的所有广告一定符合当前请求。
    1. 因此需要对 Conjunction 建立倒排索引,并加一层 Conjunction --> AD 的倒排索引辅助检索。
      1. Conjunction 建立倒排索引
      2. Conjunction --> AD 的倒排索
  2. 在 Conjunction 的倒排索引中,有一项直接可以帮助我们减少计算:
    1. 令 sizeof( query )表示广告请求中的定向标签个数
    2. 令 sizeof( Conjunction )表示某 Conjunction 的含有 的赋值集数目
    3. 当 sizeof( query )< sizeof( Conjunction )时,该 Conjunction 一定不满足该次请求
      1. 例如:广告请求只有 2 个标签,对于需要 3 以上标签求 的广告,肯定不满足此次检索的匹配条件

根据上图的一组广告为例,这组广告的 DNF 可以按如下的方式分解成一些 conjunction

对应的倒排索引很容易地写成下面的的形式:

在上述 所有 Conjunction 的最大 size 为 2(Conjunction 的含有 的赋值集数目),可以将倒排索引分成 3 部分,每部分中所有

Conjunction 的 size 一样,按照这样的准则,最终形成的 Conjunction 排索引 应为下面的形式:

注意:

  • sizeof( Conjunction )= 0,包含那些所有只有 操作负的 Conjunction
  • 为了保证给定一个 assignment,sizeof( Conjunction )= 0 至少出现在一个倒排表里,算法引入 Z 为一个特殊的 term,并且将所有 sizeof( Conjunction )= 0 都放入其倒排表中,并赋以一个 操作符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值