概述
本篇文档将介绍如何从AIRec智能推荐服务获取推荐结果数据,当您请求获取推荐结果的接口时,推荐结果数据将以JSON格式回传给您。
本篇文档内容适用版本:行业运营版、算法配置版。
参数说明
参数 | 类型 | 描述 | 是否必填 | 备注 |
userId | string | 需要推荐的目标用户 | 和imei至少一个不为空 | 如果不在user表中,则无个性化效果 |
imei | string | 用户设备id,安卓设备是(imei),IOS设备是(idfa) | 和userId至少一个不为空,非注册用户必填 | 32位MD5值 |
returnCount | Integer | 单次请求返回的推荐结果数量 | 是 | 建议取值20 |
sceneId | string | 物品投放的场景ID | 是 | 默认值为1,需要与上传的数据中场景ID一致 |
items | string | 在“相关推荐”场景下的基准物品 | “相关推荐”场景下必填 | 格式:itemId:itemType,itemId:itemType |
ip | string | 用户最后登录的ip | 否 | — |
rankOpen | boolean | 召回排序阶段是否根据用户id个性化排序 | 否 | 默认值true |
recType | string | 推荐服务类型 | 否 | hot:热门推荐、rr:相关推荐、gul:猜你喜欢。注意:rr和gul都属于个性化推荐服务,只有rankOpen=false且recType="hot"时才完全关闭个性化推荐 |
filter | string | 推荐过滤条件 | 否 | 推荐过滤功能的详细使用可参看:通过推荐过滤功能实现Feed流个性化过滤 |
strategy | string | 置顶、坑位策略功能开关 | 否 | 用户访问页面的首次请求时strategy值传'fixedSlot',将返回置顶、坑位配置的推荐结果。缺省则按照默认算法推荐。 |
clearExposure | string | 是否清空曝光过滤记录 | 否 | clearExposure=true时,会清空掉当前用户的曝光过滤记录,该用户将被允许看到之前已曝光过的item,重新开始累计曝光过滤物品。不需要时不传值即可。 |
通过服务端SDK获取推荐结果的常见错误
返回结果为空:
1、请求参数填错:测试场景填入:scene_id,此项必须保证上报过来的数据中有此场景id;
测试用户填入:user_id,如果填入的user_id未存在user表中,则视为新用户;
推荐物品数:要小于场景可推荐的item数量。
注意:通过服务端SDK获取推荐结果中推荐物品数最大值=50。如果是相关推荐,还需要填入item_id:item_type为请求参数,详情如下相关推荐请求参数.2、由于满足条件的可推荐的物料数过少,默认开启了曝光过滤功能后当前用户已经把当前场景的item全部刷空了(全部曝光过了)。
示例代码
package com.aliyun.airec;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.airec.model.v20181012.RecommendRequest;
import com.aliyuncs.airec.model.v20181012.RecommendResponse;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class Recommend {
public static void main(String args[]) {
// 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
//强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
//本示例以将AccessKey保存在环境变量中来实现身份验证为例。
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultProfile.addEndpoint("cn-hangzhou", "Airec", "airec.cn-hangzhou.aliyuncs.com");
DefaultAcsClient client = new DefaultAcsClient(profile);
RecommendRequest request = new RecommendRequest();
//以下三个参数为必填参数。
request.setInstanceId("airec-xxx");
request.setReturnCount(10);
request.setSceneId("场景id");
//以下参数需要至少上报一个(imei/user_id)。
request.setUserId("0");
request.setImei("0");
//如果是相关推荐场景可选使用
//request.setItems("88:article,33:image");
//如果需要关闭个性化推荐
//request.setRankOpen(false);
//request.setRecType("hot");
request.setAcceptFormat(FormatType.JSON);
try {
RecommendResponse response = client.getAcsResponse(request);
for (RecommendResponse.ResultItem item : response.getResult()) {
System.out.println(item.getItemId());
System.out.println(item.getItemType());
System.out.println(item.getTraceId());
System.out.println(item.getTraceInfo());
System.out.println(item.getMatchInfo());
System.out.println(item.getWeight());
System.out.println(item.getPosition());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}