You need to enable JavaScript to run this app.
导航
通过动态筛选,实现用户个性化筛选
最近更新时间:2024.06.06 12:25:18首次发布时间:2022.10.14 10:23:27
我的收藏
有用
有用
无用
无用

本文将向您介绍如何使用动态筛选功能,实现推荐场景的按需定制,满足用户的特定浏览喜好。

背景介绍

在某些推荐场景中,用户会因为自身的喜好,对推荐的结果进行筛选,只看到筛选后的推荐结果。这时可以基于动态筛选的功能,在推荐平台完成动态筛选的配置,在请求推荐服务接口时,回传筛选的属性值,完成动态的筛选。

应用场景

场景1:在用户浏览长视频时,对电影、电视剧等视频类型或者视频的地区等属性进行筛选。
图片
场景2:用户在浏览房产应用时,对房产所在的地理位置有硬性需求,对房产的地理位置属性进行筛选。
图片
场景3:在浏览电商网站时,对于某个价格区间的商品进行筛选,或者在积分商城里,根据用户的积分筛选对应价格区间的商品。
图片
场景4:在浏览小说/音视频等内容时,根据小说的类型/标签进行筛选。
图片

使用方法

在【策略管理】-【业务规则】-【内置规则】中,创建动态筛选规则,并在 在线服务 中选用。
图片
左侧选择需要筛选的物品属性,右侧需要填写请求在线服务时传入的参数名。在线请求时将动态的参数值与对应的参数名一起传入,平台将会按照配置的运算符进行计算,符合计算条件的物品将会被筛选保留下来,不符合的物品将会被过滤掉。
平台支持选择多个物品属性进行动态筛选,多个物品属性之间可以配置 or/and 的关系。如果配置了多个物品属性,在线传入的时候每个物品属性的参数值都需要传入。当在线参数没有传时,具体的过滤逻辑如下:

  1. 当在线请求没有上传字段时(没有key,或者有key没有传value/数组类型传[]),例如配置A in B AND A not in C,字段B没有传入。
    • A in B动态筛选条件不生效,不做过滤。
    • 不影响其他条件生效,即字段C传入时,A not in C动态筛选条件生效。
  2. 当在线请求正常上传字段时:
    1. 若物品表定义的字段值没有传(没有传、传null):均会被过滤
    2. 若物品表定义的字段值传空字符串:按照空字符串或空数组进行匹配

说明

注意:
以上为airsort逻辑,若sort版本为thirdsort(不清楚版本可以询问对接的火山算法同学),配置了动态过滤规则但在某些请求下希望不过滤时,可以考虑的方案,以string/array类型为例:

  • 使用in=算子时:1)将所有满足条件的值都传入;或2)物品表字段都额外传入一个特殊值“all“,在线参数值传“all”
  • 使用not in!=算子时:传入一个不存在的值

在线请求的参数值回传的API服务见推荐接口(predict) 智能推荐平台-火山引擎
按照如下字段要求返回参数值:
图片
如果选择的物品属性是商品价格,支持配置价格区间,区间支持设置开闭。如果配置了价格区间,则需要填写左边界的参数名和右边界的参数名。
图片
除了支持价格区间,平台还支持表达式的计算。例如:在积分商城场景下,展示的商品价格要小于用户积分的1.2倍,平台配置的参数为price*1.2。
图片
不同行业支持的字段如下:

  • 电商行业:商品类目cate、商品品牌brand、商品价格current_price、自定义字段。
  • 内容社区行业:内容分类cate、内容类型doc_type、内容作者author_id、自定义字段。
  • 长视频行业:视频标签tags、视频分类category、视频类型video_type、视频国家pub_region、自定义字段。
  • 金融行业:物品类目cate、物品类型item_type、发行机构organization、物品来源prod_source_type、物品标签tags、自定义字段。

不同字段类型对应的运算符号如下:

物品表字段

运算符

在线传入字段

string

属于(in)、不属于(not in)

array<string>

等于(=)、不等于(!=)

string

array<string>、tags字段

属于(in)、不属于(not in)

array<string>

int32、int64

等于(=)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、在区间(between)

和物品表一致的类型

float、double

大于(>)、小于(<)、在区间(between)

和物品表一致的类型

array<int32>、array<int64>、array<float>、array<double>

属于(in)、不属于(not in)

和物品表一致的类型

说明

注意:

  • 自定义字段若有多个值,需要定义为 array 类型;若定义为特定分隔符分隔的 string 类型,平台不会做切分,会将其作为一个整体做匹配。
  • 属于/不属于的含义是判断物品表中的字段与在线传入是否有交集,例如:item1在物品表中传入的字段 tags 为A、E,在线传入字段为A、B、C、D,二者关系为in,则:item1 在当前 spm 下为可推,即命中任一在线传入字段值(此示例中为A)即满足条件、不会被过滤。