简介: Music Studio程序,在mysql / mssql数据库上运行,随机选择歌曲表中的歌曲。
问题:多张CD上存在相同的歌曲,因此可以多次选择相同的歌曲,这不应该发生。大问题:如何避免这种情况,因为名称并不总是完全相同。
(选择歌曲时应采用的其他规则:
我无法更改数据库的结构,否则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
答案 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.html 和 http://wiki.apache.org/solr/TextProfileSignature