数据库自动歌曲计划器不应该选择相同的歌曲

时间:2014-12-05 15:55:29

标签: mysql sql-server database solr similarity

简介: Music Studio程序,在mysql / mssql数据库上运行,随机选择歌曲表中的歌曲。

问题:多张CD上存在相同的歌曲,因此可以多次选择相同的歌曲,这不应该发生。大问题:如何避免这种情况,因为名称并不总是完全相同。

(选择歌曲时应采用的其他规则:

  • LastPlayedTime超过X分钟。
  • 当前队列播放列表中不存在(该歌曲已在近期播放)。
  • 评分> 1(可以是0-10) )

我无法更改数据库的结构,否则Music Studio会破坏。但我可以使用像SOLR或MongoDB这样的辅助数据库或......来抓取

将一些歌曲ID放在队列播放列表中。

我在想:选择一首与历史中歌曲的10%不匹配的歌曲(lastplayedtimestamp或历史表)或者在queuelist(表格)中。

例如SOLR是否可以实现?

(我只需要使用songid来指示musicstudio将歌曲放入队列列表中。)

歌曲表结构:

示例:

Id, Artist,                       Title,                         Filename (usually Artist - Title . Extension).
1,  Narcotic Thrust,              I Like It (ORIGINAL MIX) 2004, C:\library\Dance X 2004\Narcotic Thrust - I Like It (ORIGINAL MIX) 2004.mp3
2,  Narcotic Thrust,              I Like It,                     C:\library\Dance CD 2005 vol.1\410-narcotic_thrust-i_like_it.flac
6,  01 Inna featuring Bob Taylor, Deja Vu,                       C:\library\Cool Dance CD vol.3\201 Inna featuring Bob Taylor - Deja Vu.mp3
7,  Inna (feat.) Bob Taylor,      Deja Vu,                       C:\library\Best Dance CD vol.9\08.Inna feat bob taylor - Deja Vu.mp3
8,  Inna,                         Déjà Vu,                       c:\library\D-Dance vol.2\206-inna-deja_vu.mp3

1 个答案:

答案 0 :(得分:0)

这项任务非常重要,因为它可能无法检测到重复的歌曲,而无需依靠对歌曲本身的运行统计分析而不是在其标题上,但假设在大多数情况下关于这首歌的元数据将有很多共同之处,你可以通过局部敏感的散列来获得足够的结果,其中近似重复将获得类似的哈希值。在汉明距离中测量相似度。

我建议的解决方案是在Artist,Title和Filename上运行Simhash。您可以使用stemmer准备字符串,然后测量所述汉明距离,如果超过阈值(您需要定义它),那么您现在很可能是重复的。

从本质上讲,您将要做的将是搜索几乎重复的内容 - 有关更详细的说明,请参阅下面的链接 http://www.inf.ed.ac.uk/teaching/courses/tts/pdf/dup-2x2.pdf

关于你提到solr的问题部分,下面的链接是我能得到的最接近的链接。我从来没有用过它,所以不能说清楚它。 http://lucene.apache.org/solr/4_10_2/solr-core/org/apache/solr/update/processor/TextProfileSignature.htmlhttp://wiki.apache.org/solr/TextProfileSignature