Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [php & mysql] Поиск среди нескольких таблиц, Есть муз. сайт: артисты, альбомы и треки 
:(
    Опции темы
kanaris
Дата 20.5.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.2.2008

Репутация: нет
Всего: -1



Есть музыкальный сайт. В его БД есть 3 таблицы:

1) исполнители (id, name)
2) альбомы (id, artist, name)
3) треки (id, artist, album, name)

Нужно организовать поиск по этим таблицам. Например пользователь ввел запрос "within temptation see who i am". Система должна САМА определить, где из этой строки название группы (within temptation, из табл. "исполнители") и где название трека (see who i am, из "треки").
Подскажите плиз самую грамотную реализацию сабжа.

Пробовал:

1)
Код

select
         mf_artists.id as artid,
         mf_artists.name as artname,
         mf_tracks.id as trid,
         mf_tracks.name as trname
from
         mf_tracks,
         mf_artists
where
         mf_artists.id=mf_tracks.artist and
         mf_artists.name+' '+mf_tracks.name like 'within temptation see%'

- не находит ничего;


2) полнотекстовый поиск:
Код

select
         mf_artists.id,
         mf_artists.name,
         mf_tracks.id,
         mf_tracks.name,
         match(mf_artists.name,mf_tracks.name) against ('burzum')
from
         mf_artists,
         mf_tracks
where
         match(mf_artists.name,mf_tracks.name) against ('burzum') and
         mf_artists.id = mf_tracks.artist

- #1210 - Incorrect arguments to MATCH 


3) 
Код

SELECT id, name
FROM mf_artists
WHERE name LIKE '%with%'

- находит, но придется тогда делать выпадающий список, среди чего искать (по группам, по альбомам, по песням).
PM MAIL   Вверх
ksnk
Дата 20.5.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 14
Всего: 386



все текстовые данные про этот трек должны быть слиты в одно текстовое поле и поиск должен идти по нему. Или еще страшнее - в это поле слиты только словоформы... 
Юзеры по любому толком не знают как называется исполнитель и его музыка smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kanaris
Дата 20.5.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.2.2008

Репутация: нет
Всего: -1



Таблица получится о-о-очень большой. При текущем положении вещей она весит почти 300 мб. Если сделать еще одну таблицу со словоформами, боюсь места на хостинге не хватит.
PM MAIL   Вверх
Serkys
Дата 22.5.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 1
Всего: 22



Не стоит делать поиск напрямую из MySQL. Для этого существуют sphinx, Apache Lucene, Zend_Search_Lucene и другие системы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.