Проверка на уникальность в БД (нужна помощь)

12
KA
На сайте с 03.01.2007
Offline
137
1116

Здравствуйте

Столкнулся с проблемой

При загрузке на сайт новой mp3 мелодии необходимо проверить на существование такой-же в базе (скриптом)

Название артиста и название песни пользователь сам вбивает

К примеру одну и ту же песню пользователи могут называть оч. по разному

Птаха - Я Верю (При Участии RusKey)
Птаха & RusKey - Я верю в бога
Птаха - Я Верю
Птаха - Я Верю (при уч. RusKey)

Укажите направление, в котором следует думать.

Интернет магазин оптических приборов (http://oz.com.ua) в Украине - бинокли, микроскопы, телескопы.
RO
На сайте с 13.07.2009
Offline
88
#1

как вариант можно сделать так:

select * from table_music where artist_name='Птаха' and song like '%Я Верю%'

но всеравно не айс...

function check_song($song,$artist)

{
$w=explode(' ',$song);
$s=sizeof($w);
if(strlen($w)>3)
{
for($i=0;$i<$s;$i++)
{
if(mysql_num_rows(mysql_query("select * from table_music where artist_name='$artist' and song like '%$w[$i]%'"))!=0) return true;
}
return false;
}
}

$song='Я Верю (При Участии RusKey)';
$artist='Птаха';

if(check_song($song,$artist)) echo 'такая песня у этого артиста по ходу уже есть';

не претендую на звание "лучшая функция года", но что то в этом есть.

но вы ко мне не прислушивайтесь я увлекаюсь говнокодом

KA
На сайте с 03.01.2007
Offline
137
#2

Спасибо, такое и сам знаю )

Допустим добавили Птаха & RusKey - Я верю в бога, а в базе Птаха - Я Верю, не будет работать запрос

select * from table_music where artist_name='Птаха & RusKey' and song like '%Я верю в бога%'

Думаю делать проверку по словам и если >75% вхождений - считать одинаковым

RO
На сайте с 13.07.2009
Offline
88
#3
Думаю делать проверку по словам и если >75% вхождений - считать одинаковым

а как именно будете определять сходство в процентах?

sirota77
На сайте с 08.09.2008
Offline
161
#4

а если сравнивать размеры загруженных файлов ?

RO
На сайте с 13.07.2009
Offline
88
#5
sirota77:
а если сравнивать размеры загруженных файлов ?

тоже самое что и сравнивать типы загруженых файлов или для особого извращения сравнивать id3 теги...

KA
На сайте с 03.01.2007
Offline
137
#6
RedOK:
а как именно будете определять сходство в процентах?

Разбивать на слова, искать сходство между словами

Птаха - Я Верю (При Участии RusKey)
Птаха & RusKey - Я верю в бога

1 фраза - Птаха|Я|Верю|При|Участии|RusKey - 27 символов

2 фраза - Птаха|RusKey|Я|верю|в|бога - 22 символа

Вхождения - Птаха|Я|Верю|RusKey - 17 симолов

Для 1 фразы - 62%

Для 2 фразы - 77%

KOSMOS aka Anarion добавил 15.03.2010 в 21:59

sirota77:
а если сравнивать размеры загруженных файлов ?

Представьте себе 10 000 музыкальных песен

Длительность обычная от 1 минуты до 15 минут (а вообще почти у всех 2-6 минут)

Какова вероятность совпадения?)

frantic
На сайте с 09.02.2009
Offline
27
#7
KOSMOS aka Anarion:

Представьте себе 10 000 музыкальных песен
Длительность обычная от 1 минуты до 15 минут (а вообще почти у всех 2-6 минут)
Какова вероятность совпадения?)

С точностью до байта почти нулевая

RO
На сайте с 13.07.2009
Offline
88
#8

до такого извращенства даже я не смог додуматся 😒

KA
На сайте с 03.01.2007
Offline
137
#9
frantic:
С точностью до байта почти нулевая

Изначально подумал что sirota77 предлагает по длительности сравнивать. Устал наверно...

RO
На сайте с 13.07.2009
Offline
88
#10

есче один вариант, можно сделать добавление в 2 этапа, сначала юзер вводит исполнителя к которому хочет добавить песню, на следующем этапе ему показывается список с уже существующими песнями у этого исполнителя, и такой типа вопрос: "Ваша песня отсутствует в данном списке? да/нет"

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий