行为数据上报的好处
通过用户对结果的反馈,方便产研侧后面评估效果,优化产品体验。
通过行为数据的返回可以为用户提供效果的报表展示,更直观的查看对应报表数据。
上报行为数据
说明:建议通过SDK手动上传行为数据。下文详细介绍了行为数据包含的字段类型与含义。
SDK上报有8个必须字段:user_id、biz_id、trace_id、rn、item_type、bhv_type、bhv_time、reach_time。
ID | 字段名 | 字段类型 | 字段含义 | 字段值 | 是否必须 |
1 | app_version | STRING | 业务侧网站或移动APP的版本号 | 非必须 | |
2 | sdk_type | STRING | 数据上报使用的SDK类型。该字段是开放搜索为了区分服务端上报和移动端采集的SDK而设置的 | 非必须如果是通过开放搜索SDK做上报,会默认设置该值为”opensearch_sdk” | |
3 | sdk_version | STRING | 数据上报使用的SDK版本号 | 非必须如果是通过开放搜索SDK做上报,会默认设置该值 | |
4 | login | STRING | 终端用户在业务侧网站或移动APP上是否是登录状态 | 取值为0或1。含义为:0(未登录), 1(登录) | 非必须 |
5 | user_id | STRING | 用于唯一标识终端用户的一个ID。 | 非必须但imei,user_id不能同时为空 | |
6 | imei | STRING | 终端用户设备ID(值可以为:imei,device_id,idfa) | 非必须但imei,user_id不能同时为空 | |
7 | biz_id | BIGINT | 业务侧用于区分不同业务的一个数值ID。一般,业务侧的一个biz_id对应一个开放搜索应用,如:应用id | 必须 | |
8 | trace_id | STRING | 用于区分行为针对的doc是来自哪个搜索服务商输出的结果 | 如果是来自开放搜索的结果,该字段值设置为Alibaba,如果是来自其他服务商的结果,业务侧可以自己取名字 | 必须 |
9 | trace_info | STRING | 该值来自开放搜索在搜索结果中返回ops_request_misc的值,原样回传即可 | 非必须 注:trace_id为Alibaba时必须要回传,内部用于核对是由开放搜索输出的结果 | |
10 | rn | STRING | 用于标识一个搜索pv。 该值来自开放搜索在搜索结果中返回的request_id的值,原样回传即可。 | 必须 | |
11 | item_id | STRING | 行为的发生的数据下标 | 非必须,默认为0 | |
12 | item_type | STRING | 数据类型 |
| 必须 |
13 | bhv_type | STRING | 行为类型,例如曝光、停留、浏览、收藏、下载等 |
| 必须 |
14 | bhv_value | STRING | 具体行为描述 | 格式为JSON格式:可参考下面常见行为取值 | 非必须 |
15 | bhv_time | STRING | 行为发生的时间戳,单位s | 必须 | |
16 | bhv_detail | STRING | 对行为的一些描述详情。 | 格式:key=value{,key=value} 表示可以是1个或多个key=value对 | 非必须 |
17 | ip | STRING | 行为发生的手机或终端的ip | 非必须建议设置 | |
18 | longitude | STRING | 行为发生位置的经度 | 非必须建议设置 | |
19 | latitude | STRING | 行为发生位置的纬度 | 非必须建议设置 | |
20 | session_id | STRING | 用户的一次会话id | 非必须建议设置 | |
21 | spm | STRING | 提供给业务用来跟踪行为所在的页面模块的位置 | 编码格式为a.b.c.d, 分别代表站点ID,页面ID, 模块ID, 位置ID。 | 非必须 |
22 | report_src | STRING | 用于区分上报来源 | 取值为1,2,3。含义:1(通过开放搜索SDK上报),2(通过移动端SDK采集),3(通过开放搜索API上报) | 非必须 |
23 | mac | STRING | 手机或终端设备的网卡MAC地址 | 非必须 | |
24 | brand | STRING | 手机或终端的品牌 | 非必须建议设置 | |
25 | device_model | STRING | 手机或终端的机型 | 非必须 | |
26 | resolution | STRING | 手机或终端的屏幕分辨率 | 非必须 | |
27 | carrier | STRING | 手机或终端的移动运营商 | 非必须 | |
28 | access | STRING | 手机或终端连接的网络 | 非必须 | |
29 | access_subtype | STRING | 手机或终端连接的网络类型 | 非必须 | |
30 | os | STRING | 手机或终端的操作系统 | 非必须 | |
31 | os_version | STRING | 手机或终端操作系统的版本 | 非必须 | |
32 | language | STRING | 手机或终端设置的语言类型 | 非必须 | |
33 | phone_md5 | STRING | 用户手机号的md5值 | 非必须 | |
34 | reserve1 | STRING | 预留字段 | 非必须 | |
35 | reserve2 | STRING | 预留字段 | 非必须 | |
36 | reach_time | BIGINT | 该数据到达服务端的时间,格式:时间戳,单位:秒。 | 必须,如果是通过开放搜索SDK做上报,SDK会自动设置, 如果是通过开放搜索API做上报,需要设置 |
常见行为取值
bhv_value格式
{
"code":[2.3,2.5], # 用来设置具体的问题类型,具体code值及含义见下表
"expect" : "期望答复的内容"
}
ID | code | 含义 |
1 | 1.1 | 问题理解-没有可用于回答问题的检索结果/参考链接 |
2 | 2.1 | 回答质量-存在编造内容 |
3 | 2.2 | 回答质量-存在概念混淆 |
4 | 2.3 | 回答质量-存在重复 |
5 | 2.4 | 回答质量-存在与问题无关的内容 |
6 | 2.5 | 回答质量-回答不全面 |
7 | 2.6 | 回答质量-表达不清晰 |
8 | 3.1 | 有害信息-敏感 |
9 | 3.2 | 有害信息-歧视 |
10 | 3.3 | 有害信息-有害 |
其他问题 |
Push 推送采集数据
参数描述
参数名称 | 类型 | 描述 |
$docJson | string | 文档 list,为 JSON 格式 |
$searchAppName | string | 关联的搜索应用名 |
$dataCollectionName | string | 数据采集名称,开通时控制台会返回该名称 |
$dataCollectionType | string | 数据采集类型:BEHAVIOR |
push 代码示例:
import com.aliyun.opensearch.DataCollectionClient;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
import static org.junit.Assert.assertTrue;
public class PushLLMBehavioralData {
private static String accesskey = "your ak";
private static String secret = "your secret";
private static String host = "your host";
private static String searchAppName = "app_name";
private static String dataCollectionName = "opened_data_collection_name";
private static String dataCollectionType = "BEHAVIOR";
public static void main(String[] args) throws Exception {
//创建并构造OpenSearch对象
OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
//创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
OpenSearchClient client = new OpenSearchClient(opensearch);
//创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
DataCollectionClient dataCollectionClient = new DataCollectionClient(client);
// 直接推送文档
String docJson = "[{\"cmd\": \"ADD\",\"fields\": {"\user_id"\:"\1120021255"\,\"biz_id\": 1365378,\"rn\": \"170107366216796189819166\",\"trace_id\": \"Alibaba\",\"item_id\": \"id\",\"item_type\": \"goods\",\"bhv_type\": \"click\",\"bhv_time\": \"1701074578\"}}]";
try {
OpenSearchResult openSearchResult = dataCollectionClient.push(docJson,
searchAppName, dataCollectionName,
dataCollectionType);
System.out.println(openSearchResult);
} catch (Exception e) {
e.printStackTrace();
assertTrue(false);
return;
}
}
}
commit 代码示例:
package com.aliyun.opensearch.demo;
import com.aliyun.opensearch.DataCollectionClient;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
import java.util.HashMap;
import java.util.Map;
public class PushDataCollectionDoc {
private static String accesskey = "your ak";
private static String secret = "your secret";
private static String host = "your host";
private static String searchAppName = "opensearch_app_name";
private static String dataCollectionName = "opened_data_collection_name";
private static String dataCollectionType = "BEHAVIOR";
public static void main(String[] args) {
//创建并构造OpenSearch对象
OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
//创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
OpenSearchClient client = new OpenSearchClient(opensearch);
//创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
DataCollectionClient dataCollectionClient = new DataCollectionClient(client);
Map<String, Object> fields = new HashMap<String, Object>();
// 用户唯一标识
fields.put("user_id", "1120021255");
// 业务侧用于区分不同业务的数值ID 对应一个开放搜索应用
fields.put("biz_id", 1365378);
// 搜索结果中返回的request_id的值,原样回传即可
fields.put("rn", "1564455556323223680397827");
// 如果是来自开放搜索的结果,该字段值设置为Alibaba
fields.put("trace_id", "Alibaba");
// 开放搜索应用中主表主键值
fields.put("item_id", "2223");
// item类型为 物品、商品
fields.put("item_type", "goods");
// 点击类行为数据
fields.put("bhv_type", "click");
// 行为发生的秒级时间戳
fields.put("bhv_time", "1566475047");
//增加一条文档
//这条文档只是增加到 SDK Client buffer中,没有正式提交到服务端;只有调用了 commit 方法才会被提交到服务端。
//可以多次调用 add,然后调用commit() 统一提交。
dataCollectionClient.add(fields);
try {
OpenSearchResult openSearchResult = dataCollectionClient.commit(searchAppName, dataCollectionName, dataCollectionType);
System.out.println(openSearchResult);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
}
- 本页导读 (0)