本文将向您介绍如何使用动态筛选功能,实现推荐场景的按需定制,满足用户的特定浏览喜好。
在某些推荐场景中,用户会因为自身的喜好,对推荐的结果进行筛选,只看到筛选后的推荐结果。这时可以基于动态筛选的功能,在推荐平台完成动态筛选的配置,在请求推荐服务接口时,回传筛选的属性值,完成动态的筛选。
场景1:在用户浏览长视频时,对电影、电视剧等视频类型或者视频的地区等属性进行筛选。
场景2:用户在浏览房产应用时,对房产所在的地理位置有硬性需求,对房产的地理位置属性进行筛选。
场景3:在浏览电商网站时,对于某个价格区间的商品进行筛选,或者在积分商城里,根据用户的积分筛选对应价格区间的商品。
场景4:在浏览小说/音视频等内容时,根据小说的类型/标签进行筛选。
在【策略管理】-【业务规则】-【内置规则】中,创建动态筛选规则,并在 在线服务 中选用。
左侧选择需要筛选的物品属性,右侧需要填写请求在线服务时传入的参数名。在线请求时将动态的参数值与对应的参数名一起传入,平台将会按照配置的运算符进行计算,符合计算条件的物品将会被筛选保留下来,不符合的物品将会被过滤掉。
平台支持选择多个物品属性进行动态筛选,多个物品属性之间可以配置 or/and 的关系。如果配置了多个物品属性,在线传入的时候每个物品属性的参数值都需要传入。当在线参数没有传时,具体的过滤逻辑如下:
in
B AND A not in
C,字段B没有传入。
in
B动态筛选条件不生效,不做过滤。not in
C动态筛选条件生效。说明
注意:
以上为airsort逻辑,若sort版本为thirdsort(不清楚版本可以询问对接的火山算法同学),配置了动态过滤规则但在某些请求下希望不过滤时,可以考虑的方案,以string/array类型为例:
in
、=
算子时:1)将所有满足条件的值都传入;或2)物品表字段都额外传入一个特殊值“all“,在线参数值传“all”not in
、!=
算子时:传入一个不存在的值在线请求的参数值回传的API服务见推荐接口(predict) 智能推荐平台-火山引擎
按照如下字段要求返回参数值:
如果选择的物品属性是商品价格,支持配置价格区间,区间支持设置开闭。如果配置了价格区间,则需要填写左边界的参数名和右边界的参数名。
除了支持价格区间,平台还支持表达式的计算。例如:在积分商城场景下,展示的商品价格要小于用户积分的1.2倍,平台配置的参数为price*1.2。
不同行业支持的字段如下:
不同字段类型对应的运算符号如下:
物品表字段 | 运算符 | 在线传入字段 |
---|---|---|
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) | 和物品表一致的类型 |
说明
注意: