уникальный массив без array_unique

nkldn

Новичок
уникальный массив без array_unique

здравствуйте!

я sql запросом создаю массив из 60 строк

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

но могут быть такие строки

David Guetta - Sexy Bitch (feat. Akon)
David Guetta feat. Akon - Sexy Bitch

песня одна и та же, но элементы разные. то есть думаю надо разбить элементы по пробелам сделать проверку если например три элемента равны трём второго - удалить второй элемент массива.

как правильнее это сделать без двух циклов? наверно если массив 60 строк то 3600 итераций будут тормозить..
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а никак
можно через полнотекстовый поиск, но ставить сфинкс ради твой задачи явно не стоит
 

nkldn

Новичок
grigori
у меня результат работы скрипта и так кэшируется на час, но то есть допустимо значит два цикла делать?

я думал можно как-то callback функцию применить к массиву )
 

Beavis

Banned
можно разбить строку в массив слов и сделать [m]array_intersect[/m]
 

Фанат

oncle terrible
Команда форума
по-моему, он не понимает, что здесь нужен не инструмент, а алгоритм. довольно нетривиальный.
и что задача, собственно, к уникальности массивов никакого отношения не имеет

и что по-хорошему это все разбирается ручками
и что в базе данных такое вообще не хранят
 

Agr

Новичок
пробуй
http://php.net/manual/en/function.similar-text.php
http://php.net/manual/en/function.levenshtein.php

потом доложи, что получил
 

nkldn

Новичок
*****
добрый день )

а где же еще хранить информацию о названии композиции, текст композиции, ссылку на композицию, количество прослушиваний?
и чтобы это было всё связано с ключевыми словами по которым нашли эту композицию.

>> по-моему, он не понимает, что здесь нужен не инструмент, а алгоритм.

вот я и хотел узнать какой алгоритм, идею

>> и что задача, собственно, к уникальности массивов никакого отношения не имеет

а как еще назвать операцию над этим массивов чтобы по смыслу одни и те же песни но разные по фактическому названию стали уникальны?
 

Фанат

oncle terrible
Команда форума
а где же еще хранить информацию о названии композиции, текст композиции, ссылку на композицию, количество прослушиваний?
я предполагаю, что David Guetta - это не текст и не количество прослушиваний.
а как еще назвать операцию над этим массивов чтобы по смыслу
так и назвать. анализ смысла. или, другими словами - искусственный интеллект. можешь почитать, насколько продвинулись современные ученые в этой области.
 

nkldn

Новичок
*****
это название композиции. их в таблице уже около 100 000
 

damngood

Мозг был, но ушел...
В таком случае это разные треки, ибо у них может быть разный битрейт и длина в минутах-секундах. ***** прав на тыщщу %, тут алгоритм простым не будет, думать над(
 

nkldn

Новичок
то что треки разные это понятно!
но согласитесть когда например в облаке тегов популярности композиций
на первом месте David Guetta - Sexy Bitch (feat Akon)
а на втором David Guetta feat. Akon - Sexy Beatch

это не очень хорошо
 

Фанат

oncle terrible
Команда форума
если уж вы меня спросили, то лично мне с высокой колокольни плевать, как облако тегов вообще, так и на композицию David Guetta - Sexy Bitch (feat Akon) в частности. я не знаю кто это такие и знать не хочу. и не думаю, что где-то младенцы умрут с голоду если вдруг эти два тега вдруг появятся рядом.
я даже думаю, что вряд ли найдется два человека в мире, которые это заметят.
 

nkldn

Новичок
*****
интересно, этот подход переносится на новичков с этого форума или исключительно на их темы?

по большому счёту мне тоже на это плевать, и это не мой формат музыки, и мне так же всё равно если этот исоплнитель сидит на наркоте.

Но это не скажешь начальнику что тебе плевать что эти композиции рядом.


Если уж совсем быть нескромным и позволить себе высказать своё мнение, я думаю что веб немного бы отличался если бы всем было плевать что две одинаковые песни, но разные по названию находятся рядом
 

dimagolov

Новичок
nkldn, тебе уже ответили, из такого конченного описания выделять исполнителя/название трека можно только вручную. Лучше этим заниматься ДО занесения в базу, например деля новое описание на слова (выкидывая скобки, черточки и точки) и искать их в имеющейся базе, а потом анализировать частичные совпадения в ручном режиме. А в базе хранить отдельно автора, отдельно название трека + остальные его атрибуты
 

nkldn

Новичок
dimagolov
да, ответили ясно

*****
>>
так и назвать. анализ смысла. или, другими словами - искусственный интеллект. можешь почитать, насколько продвинулись современные ученые в этой области.

)) я оценил

спасибо всем
 

Фанат

oncle terrible
Команда форума
нет, ни на темы, ни на участников это не переносится.
 

damngood

Мозг был, но ушел...
А что если убрать все спецсимволы ( ) . - и т.д.
Посчитать количество всех букв в фразах (для каждой из них) и сравнить массивы букв? Идея бредовая, но все же.

При сравнения не учитывать скажем те буквы, что встречаются 1-2 раза. Так как трек может содержать ошибки. Погрешность сравнения установить в несколько %.
 

Духовность™

Продвинутый новичок
Но это не скажешь начальнику что тебе плевать что эти композиции рядом.
Вот поэтому я не люблю работать с такими начальниками.

Автослесаря никто не просит установить на ВАЗ колеса от запорожца и трактора, т.к. это не возможно. В мире ПО тоже не все возможно. И это должны понимать, вт.ч. начальники и в целом предприятие, которое хочет добиться результата.
 
Сверху