获取推荐结果

更新时间:2023-09-19 02:48:35

概述

本篇文档将介绍如何从AIRec智能推荐服务获取推荐结果数据,当您请求获取推荐结果的接口时,推荐结果数据将以JSON格式回传给您。

本篇文档内容适用版本:行业运营版、算法配置版。

参数说明

参数

类型

描述

是否必填

备注

参数

类型

描述

是否必填

备注

userId

string

需要推荐的目标用户

imei至少一个不为空

如果不在user表中,则无个性化效果

imei

string

用户设备id,安卓设备是(imei),IOS设备是(idfa)

userId至少一个不为空,非注册用户必填

32MD5

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:猜你喜欢。注意:rrgul都属于个性化推荐服务,只有rankOpen=falserecType="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();
        }
    }
}

推送数据及获取推荐结果的项目demo

详见:airec推送数据+获取推荐结果demo

  • 本页导读 (1)
  • 概述
  • 参数说明
  • 通过服务端SDK获取推荐结果的常见错误
  • 示例代码
  • 推送数据及获取推荐结果的项目demo