简短介绍:
Music Studio程序在mysql / mssql数据库上运行,并从歌曲表中随机选择歌曲。
问题:同一首歌曲存在于多个CD上,因此同一首歌曲可能被多次选择,这是不应该发生的。大问题:如何避免这种情况,因为名称并不总是完全相同。
(选择歌曲时应遵循的其他规则:
LastPlayedTime超过X分钟。
当前的队列播放列表中不应存在此声音(该歌曲已被选择在不久的将来播放)。
评分> 1(可以是0-10)
)
我无法更改数据库的结构,否则Music Studio会损坏。但是我可以使用辅助数据库,例如SOLR或MongoDB或...来抓取
一些歌曲ID放在队列播放列表中。
我在想:选择一首与历史记录(lastplayedtimestamp或history表)或队列列表(表)中的歌曲不匹配10%的歌曲。
例如,使用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
最佳答案
这项任务非常艰巨,因为如果不对歌曲本身(而不是标题)进行统计分析,甚至不可能检测出重复的歌曲,但前提是在大多数情况下,有关歌曲的元数据会包含很多内容。通常,您可以通过对位置敏感的哈希来获得足够的结果,其中近重复项会收到类似的哈希值。相似度又以汉明距离来度量。
我建议的解决方案是对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
关于mysql - 数据库自动歌曲计划器不应选择同一首歌曲,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27319809/