2011-01-10 92 views
0

我有一个允许用户听音乐的应用程序。每位艺术家都有自己的特定流派。歌曲没有流派。如何设计推荐页面

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

考虑这个例子。

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

用户Joe听Alex的歌两次,听Ben的歌三次。在推荐页面中,应该显示Ben和Hannah。由于乔喜欢听更多的声学媒体。

我应该如何去设计这个?我应该有一张能够追踪这些数据的表吗?如果是这样,那么应该存在哪些列?

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

回答

0

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