引言
在电商场景中,用户从搜索关键词到点击商品详情,再到最终下单,每一步行为都蕴含着丰富的意图信号。如何利用这些信号构建个性化推荐与关联推荐,是提升转化率和客单价的关键。本文围绕「关键词搜索行为」与「商品详情特征」两条主线,介绍一套可落地的 API 技术方案,涵盖数据采集、特征工程、召回排序、关联规则挖掘以及服务化部署。整体架构
推荐系统整体分为离线计算与在线服务两层。离线层负责特征加工、模型训练和关联规则挖掘;在线层通过 API 对外提供个性化推荐与关联推荐能力。
flowchart TD
A[用户搜索行为日志] --> B[数据清洗与特征工程]
C[商品详情特征] --> B
B --> D[离线训练/规则挖掘]
D --> E[(特征库/模型库)]
E --> F[在线推荐 API]
F --> G[个性化推荐]
F --> H[关联推荐]
- 数据模型设计
推荐系统依赖两类核心数据:用户行为数据和商品特征数据。下面给出简化后的表结构设计。
3.1 用户搜索行为表
字段 类型 说明
user_id string 用户唯一标识
keyword string 搜索关键词
search_time datetime 搜索时间
click_item_id string 点击的商品 ID
stay_duration int 详情页停留时长(秒)
3.2 商品详情特征表
字段 类型 说明
item_id string 商品 ID
category_id string 类目 ID
price float 商品价格
title string 商品标题
tags array 商品标签
- 特征工程
特征工程是推荐效果的关键。这里重点介绍两类特征:搜索行为特征和商品详情特征。
4.1 搜索行为特征
关键词频次:用户近 7 天搜索同一关键词的次数,反映意图强度。
点击率:某关键词下用户点击商品的比例,用于衡量关键词与商品的匹配度。
停留时长:用户在商品详情页的平均停留时长,可作为兴趣权重的代理指标。
4.2 商品详情特征
类目偏好:用户点击商品所属类目的分布,用于刻画用户类目偏好。
价格带:用户点击商品的价格区间分布,用于价格敏感度建模。
标签向量:基于商品标签构建的向量表示,用于计算商品相似度。
- 个性化推荐 API
个性化推荐的核心是根据用户历史行为召回候选商品,再通过排序模型输出 TopN 结果。下面给出一个基于关键词与商品特征的召回排序流程。
5.1 召回策略
召回阶段采用多路召回,包括关键词匹配召回、类目偏好召回和协同过滤召回。
public List recall(String userId, String keyword, int topN) {
// 1. 关键词匹配召回
List keywordItems = searchByKeyword(keyword, topN);
// 2. 类目偏好召回
List categoryItems = searchByCategory(userId, topN);
// 3. 协同过滤召回
List cfItems = collaborativeFiltering(userId, topN);
// 合并去重
return mergeAndDedup(keywordItems, categoryItems, cfItems, topN);
}
5.2 排序模型
排序阶段使用轻量级模型,融合搜索行为特征与商品详情特征,输出点击概率。
public double predictClick(String userId, Item item, SearchContext ctx) {
FeatureVector fv = buildFeatureVector(userId, item, ctx);
return rankModel.score(fv);
}
- 关联推荐 API
关联推荐的目标是发现「经常一起购买」或「经常被一起点击」的商品组合。这里采用基于共现矩阵的关联规则挖掘。
6.1 关联规则挖掘
离线阶段统计商品对在用户会话中的共现次数,计算支持度与置信度,筛选出强关联规则。
SELECT a.item_id AS left_item,
b.item_id AS right_item,
COUNT() AS co_occurrence
FROM session_behavior a
JOIN session_behavior b
ON a.session_id = b.session_id
AND a.item_id <> b.item_id
GROUP BY a.item_id, b.item_id
HAVING COUNT() >= 10;
6.2 关联推荐接口
在线服务根据当前商品 ID 查询关联规则表,返回关联商品列表。
public List recommendRelated(String itemId, int topN) {
List rules = ruleService.findByLeftItem(itemId);
return rules.stream()
.sorted(Comparator.comparingDouble(Rule::getConfidence).reversed())
.limit(topN)
.map(rule -> itemService.getById(rule.getRightItem()))
.collect(Collectors.toList());
}
- 服务化部署
推荐能力以 RESTful API 形式对外提供,支持高并发查询。下面给出接口定义示例。
7.1 个性化推荐接口
GET /api/v1/recommend/personal?user_id=U123&keyword=手机&top_n=10
7.2 关联推荐接口
GET /api/v1/recommend/related?item_id=I456&top_n=10
接口返回统一 JSON 结构,包含推荐商品列表及推荐理由。
{
"code": 0,
"data": {
"items": [
{"item_id": "I789", "score": 0.92, "reason": "与您搜索的「手机」高度相关"},
{"item_id": "I101", "score": 0.88, "reason": "购买该商品的用户也购买了"}
]
}
}
- 效果评估与优化
推荐系统上线后需要持续评估与优化。核心指标包括点击率(CTR)、转化率和关联购买率。
CTR:衡量推荐结果的点击吸引力。
转化率:衡量推荐结果对下单的贡献。
关联购买率:衡量关联推荐对客单价的提升效果。
优化方向上,可引入实时行为反馈、A/B 实验以及模型定期重训练,确保推荐效果随用户行为变化而持续迭代。
- 总结
本文围绕关键词搜索行为与商品详情特征,介绍了构建个性化推荐与关联推荐的完整 API 技术链路。核心要点包括:以搜索行为刻画用户实时意图,以商品详情特征补充长期偏好;通过多路召回与排序模型输出个性化结果;通过共现矩阵挖掘关联规则实现关联推荐。整套方案可快速接入电商业务,并支持后续扩展实时计算与深度学习模型。