我在一家做跨境电商的小公司当程序员,最近有个个性化推荐的需求需要我完成,前面都还好,快要完成了遇到点事儿,跟产品经理有点讲不通的地方,在此吐个槽。具体的个性化推荐笔记我会在完成该需求后花点时间整理一下,毕竟学到了挺多东西的。
我们的业务员会给商品做一个打分,这个分数是他们希望曝光率更高的商品。这是第一点。
第二点是根据我们后台收集的用户行为数据,每个用户会对相关商品有一个打分,这个打分就是用户对商品的个性化推荐得分。
然后我现在要做的是将这两个打分给统一起来,加权求和后的总分就是给用户的一个推荐顺序。
实现这个需求比较简单,商品数据以及用户对每件商品的个性化得分都存储在elasticsearch中。用户搜索时,先将用户对商品的个性化推荐得分筛选出来,弄成一个 id-score
形式的哈希表,再通过elasticsearch的sortScript,进行脚本排序,在脚本中完成两个得分的加权求和,最后再根据结果倒序排列,完成对用户的推荐。
在搜索时同时需要注意用户的体验感,整个请求时间得控制在200ms以内,而排除了其他必要已经存在的业务耗时以后,留给个性化推荐的时间也就100ms左右,因此问题就出现了。
elasticsearch作为一个搜索引擎,本身在获取大量数据时性能就不太好,现在又加了个更耗性能的脚本。这下好了,接口耗时在1s以上,就算ES有热数据,整体耗时也在400ms以上。
为了减少响应时间,最直观的方法就是减少数据量,一页也才展示几十个商品,那我只需要处理前1000个个性化商品,这样既能给用户推荐他可能感兴趣的商品,又不至于过于影响性能。我将想法同产品经理说出来,准备讨论一下修改方案,结果被一口回绝,必须将所有产品都列入推荐当中!而且接口响应时间也得控制在200ms左右!
既要快,又要好,公司还不愿加机器,搭建ES集群……真就既要马儿跑的快,还不让马儿吃得贵。
啥事儿没有,吐个槽
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本书借助数据仓库实现一套用户画像系统的方案。从实际工程案例出发,结合多业务场景,内容涵盖开发离线批处理计算的标签及...
- 一、导读 Hi!大家久等了!时隔10天,白日梦的Elasticsearch笔记进阶篇终于甘完了!本次更新依然是干货...
- 前言 第一部分,推荐模块技术点结合实际工作分选品、召回、排序、策略、干预、外显模块叙述各部分使用到的算法和策略。在...