如何在数据库中创建建议?

时间:2016-02-04 15:04:37

标签: database conceptual conceptual-model bigdata

我想开发一个小型音乐库。我的目标是为用户添加建议的概念:

  • 用户将音乐添加到应用程序中,他根本没有联系,它是匿名
  • 当用户打开或关闭应用程序时,我们将他的库发送到我们的数据库,以收集(仅)新的音乐曲目信息。
  • 当用户点击建议时,我想检查数据库并将他的库与数据库进行比较。我想找到用户喜欢他的音乐,他和他听同样的音乐,听。

我的想法是在两个音乐之间建立一个链接,这个链接定义为百分比获得这两个音乐的用户。如果这个百分比很高,我们可以向听第一个的用户建议第二个。

我需要一些帮助才能找到有关该类型数据库的文档,没有任何用户的想法。我必须将用户库与大量音乐进行比较。我发现它的基于商品的推荐。我有一个好方法吗?

1 个答案:

答案 0 :(得分:0)

用户是否收听某首歌或将其放入他/她的图书馆可能会产生误导。很多时候,样本音乐会附带一个操作系统或音乐播放器,用户根本不在乎删除它,或者很多时候机器很难确定音乐和其他声音之间的区别。或者也许某人有一些他们下载的音乐,因为它在纸上看起来很有趣,或者出现在他们喜欢的专辑中,但实际上他们最终不喜欢那首歌,但又没有删除它。

有一段时间我将Windows Media播放器设置为随机播放计算机上的所有音乐,令我惊讶的是,我听到了之前从未听过的音乐效果(来自我从未听说过的艺术家,我没有播放的音乐类型和# 39; t听),甚至Windows点击让我感到困惑的声音,因为我没有点击任何内容。

我说了所有这些,指出你可能想要更多地考虑用户看起来听同样的音乐。也许你可以让用户对他们收听的歌曲进行评分,并且不仅可以比较他们图书馆中的歌曲,还可以比较他们对歌曲的评分。如果两个用户拥有所有相同的歌曲,但是一个用户讨厌其他喜欢的歌曲,反之亦然,那么他们真的没有相似的口味。

我会定义一个比较两个用户的UDF'如果用户2没有,则通过取每个歌曲用户1而忽略它,但如果确实如此,则从最大评级中减去其评级差异的绝对值,然后将所有这些值加在一起。

然后我会为每个用户对另一个用户运行这个UDF并选择前几个用户,然后推荐他们评价很高的歌曲。

这将花费很长时间,特别是如果您有大量用户,那么您还可以做一个Suggestors表来存储每个用户最相似的用户,并更新(即截断)然后通过上述过程每天,每周,每月,根据您的情况重建它。建议功能(当由用户使用时)将仅需要检查用户的建议者'高收视率的歌曲,这将花费更少的时间,但会保持与用户的添加和更改相当及时更新。库。