如何设计推荐页面

时间:2011-01-10 12:32:00

标签: ruby-on-rails postgresql

我有一个应用程序,允许用户听音乐。每位艺术家都有自己的特定类型。这些歌没有流派。

我需要一个基于用户不时看到的歌曲类型的推荐页面。

考虑这个例子。

我得到了: 用户乔 艺术家本。有流派的声音。有1首歌。 艺术家Alex。有流派的爵士乐,有1首歌。 艺术家汉娜。有流派的声音。有一首歌。

用户Joe两次听Alex的歌,并听了Ben的歌3次。在推荐页面中,它应该显示Ben和Hannah。因为乔更喜欢听声学媒体。

我该如何设计呢?我应该有一个跟踪这些数据的表吗?如果是这样,应该存在哪些列?

或者,我应该在加载推荐页面时进行某种聚合吗?

1 个答案:

答案 0 :(得分:0)

您需要在歌曲和用户之间加入has_many。此连接除了user_id和song_id之外还有一个监听计数器。然后,您可以找到听过与单个用户相同歌曲的用户,返回用户最常收听的歌曲,然后由那些具有相同类型的用户排序,然后再排除那些没有收听的用户。