sunliwen / poco

Poco v1.6

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

商品详情页的推荐Bug

brook-peng opened this issue · comments

http://www.ehaoyao.com/product-2314.html 为例,商品Id为2314
image

商品详情页的右侧的本月推荐,目前全站商品的推荐都是一样的,而且效果比较怪异。
调用的接口为:
http://poco.ehaoyao.com/api/v1.6/public/recommender/?&api_key=prod-b02c65ef&callback=ehaoyao._function.fillRecommendByGoodsId&format=jsonp&amount=10&user_id=null&item_id=2314&type=%2Funit%2Fitem&1418725116816

代码中的处理是这样的:
image

按我的理解,应该是推荐优先级是

  1. 购买该商品同时又购买的其它商品
    2.本类商品的热门商品
    3.全站热门商品

我查了Mongodb数据,
集合item_buyTogether中没有数据,那么应该不能返回购买该商品同时购买的其它商品,应该取该分类的热门商品
db.items.find({'item_id':'2314'} ).limit(10), 能获取它的父分类为 367

再查找该分类的热门数据
db.cached_hot_view.find({'hot_index_type':'by_viewed','category_id':'367'}).limit(100)

这个是有结果的,但实现页面显示的结果却不是这个,

我查第三个推荐,即全站的热门商品,db.cached_hot_view.find({'hot_index_type':'by_viewed','category_id':null,'brand':null}).limit(100)
返回的结果跟页面显示的也不同

麻烦分析一下,具体是哪里有问题了,我的理解是否有偏差。谢谢!

GetAlsoViewedProcessor 会去查询 表 item_similarities_V, 对 2314进行查询,返回的结果是有数据的。

 db.item_similarities_V.find({"item_id": "2314"}).limit(10)

可能存在的问题是,GetAlsoViewedProcessor 使用的是 getRecommendationResultFilter,这个 filter 要求推荐商品的 group 必须在 allowed_category_groups 里面,而 allowed_category_groups 是由 tjb-db.sites 中的 category_groups生成的。目前,线上mongodb 中,这个属性全部是空的,进而导致了推荐的商品全部被过滤掉。

mongo_client.py, line 367
mongo_client.py line 54, 63

@jacobfan @sunliwen 我还不太清楚,这个问题的产生,是由于 sites 里面的 category 没有被更新,还是过滤的时候,这个额外的规则导致的。你们谁能回想起当时的细节吗,能不能先去掉category_groups的限制?

我想如果allowed_category_groups 为空的话,应该就是无限制才对,这个应该是默认的情况,如果allowed_category_groups 中有数据,那就应该是人工加了限制了,才需要按现有的过滤逻辑处理

另:目前这些推荐的结果是从哪里取得的呢?

@lisztli 最后的推荐结果是在stick_recommend_list里有设置,我现在修改了这个集合的数据,每个商品的对应的推荐商品已经不同,虽然推荐结果还是不那么靠谱,至少比原来全网都一样的推荐要好一些,还是要尽快把批量计算那个问题解决