2011-05-19 17 views
6

我正在考虑创建一个您在亚马逊,yelp和其他在线网站上看到的“查看此视频的人”列表。现在我正在考虑用'product_id','last_viewed_product_id','hits'创建一个新表,当用户从product_id = 100的页面转到product_id = 101时,它将创建/更新此表,其中product_id = 101,last_viewed_product_id = 100,并增加'命中'值。有更好的方法是更优化和更少的计算密集?创建'观看此视频的人也浏览过'列表

回答

4

最好我知道,亚马逊使用的“技巧”使事情的计算量更小,是a)使用贝叶斯统计量/平均值和b)计算部分总量。后者允许你不需要计算的一切(你也可以总结预先计算的总量)。前者允许你注入你推断的相关材料。

4

看来你会在正确的道路上 - 一些建议 -

对于计算密集的 - 你可能想缓存您的结果,所以你只给了一个顶部的“X”号是每天更新一次或类似的效果。在这种情况下,实际时间似乎并不重要。

我不确定你的网站有什么样的产品,但是如果品种很重要,你可能只想把有相关信息的物品展示出来(所以星球大战只会与星球大战有关项目弹出)。

因此,如果您的产品或关键字有“标签”,那么您可能希望与此产品建立关系。

您可能还想要为他们如何获得产品创建权重。如果他们通过点击您提供的清单来了解产品,那么这些类型的产品将继续存在,并且不会让其他产品有机会出现,因此请重量轻。较重的物品会弹出。

2

如果您拥有所有访问者的用户ID(您可以为未注册用户创建临时用户ID),则可以创建一个历史记录表,其中包含用户已访问过的所有产品的user_id和product_id列。然后,当用户打开产品时,执行一个查询,查询最近查看过该产品的user_id,然后将其加入到这些用户打开的产品中。然后,对这些用户标识已打开的产品进行排序。

请确保将此缓存为连接会减慢任何SQL服务器。