2011-12-15 58 views
1

我有一个存储歌曲信息的数据库。如何在MySQL中查找与数字字段相似的行?

的信息是:

歌曲的

响度是在-100和100之间,歌曲的
能源是0和1之间,歌曲的
速度是0和500之间,
Danceability歌曲介于0和1之间

我需要找到两首歌曲的相似度。

例如:

的歌曲具有类似

响度信息:-9.121000000000000
能源:0.439501478057000
节奏:133.929000000000000
danceability:0.686523448220000

我怎样才能找到歌曲类似于这首歌曲。

+0

的数值?你如何分类“相似”? – liquorvicar 2011-12-15 14:50:03

回答

0

在这个广​​泛的问题上的多种可能性。

,你可以选择具有相同的响度或相同enery或节奏或danceability

或者实际上每一个组合的所有歌曲。

,你可以选择是一个范围值内相似值全部歌曲+或 - X%

您可以输出全表筛选并使用tablesorter插件下令对各列的输出。

0

我想你想要的值/值更接近你已经拥有的价值观......搜索它,我发现这样一个问题:

Select closest numerical value with MySQL query

,我认为你可能会感兴趣。因此,立足于那里写着什么,我们可以这样做:

$query = <<<query 
(
select * 
from  songs 
where loudness >= $given_loudness 
AND 
energy >= $given_energy 
AND 
tempo >= $given_tempo 
AND 
danceability >= $given_danceability 
order by id asc 
limit 1 
) 
union 
(
select * 
from  songs 
where loudness >= $given_loudness 
AND 
energy >= $given_energy 
AND 
tempo >= $given_tempo 
AND 
danceability >= $given_danceability 
order by id desc 
limit 1 
) 
query; 

$res = mysql_query($query); 

我都认为你在songs表(哪一列型)的ID如何存储

相关问题