编程语言
首页 > 编程语言> > PHP-存储类似音乐的最佳方法

PHP-存储类似音乐的最佳方法

作者:互联网

我有数百万首歌曲,每首歌曲都有其唯一的歌曲ID.与每个歌曲ID对应,我具有一些属性,例如歌曲名称,艺术家名称,专辑名称,年份等.

现在,我实现了一种机制来找出两首歌曲之间的相似率.
它给我的值是0-100.

因此,我需要向用户展示类似的音乐,而这是无法在运行时完成的.我需要预处理每首歌曲之间的相似度值.

因此,如果我创建具有三个属性的数据库,

song1, song2, similarity

我将拥有n * n条记录,其中n是歌曲数.

每当我想获取类似的音乐时,都需要执行以下查询:

SELECT song2 WHERE song1 = x AND similarity > 80 ORDER BY similarity DESC;

请提出一些建议以维护此类信息.

谢谢.

解决方法:

我认为您最好将相似性与“原型”歌曲或分类进行比较.设计一种指纹机制,其中包括有关歌曲的信息元数据以及用于判断相似性的任何音频机制.将每首歌曲置于一个(或多个)类别中,并对该类别中的歌曲进行评分-使用指纹,该歌曲与该类别的原型匹配的紧密程度.请注意,您可能有成百上千种类别,即当您想到音乐时,它们并不是您想到的典型类别.

完成此操作后,您就可以按类别维护索引,当找到相似的歌曲时,您可以根据类别和类别中的相似性度量来设计权重-例如,通过加大权重来确定与歌曲最接近的类别.原型.将权重乘以候选歌曲和当前歌曲之间差异的平方,即可得到该类别的原型.对前3个类别的权重求和,较低的值则更相似.

这样,您只需要为每首歌曲存储一些元数据项,而无需保持成对歌曲之间的关系.如果主要算法运行得太慢,则可以保留最常用歌曲的成对缓存数据,如果歌曲不在缓存数据集中,则默认为算法比较.

标签:data-structures,database-design,mysql,php,database
来源: https://codeday.me/bug/20191208/2089986.html