Поиск по двум полям.

da_andy

Guest
Поиск по двум полям.

Есть Mysql база музыки с полями artist и album, хочу сделать, чтобы осуществлялся поиск по обоим полям.
Например, пользователь ввёл строку поиска "Prodigy Breathe" и получил результат - строку в которой, в

поле artist - Prodigy, а в поле album - Breathe.

Пожалуйста, помогите реализовать.
 

Кром

Новичок
select * from table where artist like '%Prodigy%' or artist like '%Breathe%' or album like '%Prodigy%' or album like '%Breathe%'
 

Bambuk

Новичок
А еще можно создасть полнотекстовый индекс по этим полям, и искать с помощью полнотекстового поиска. Будет быстрее и релевантность поиска повысится.
 

da_andy

Guest
2Кром: спасибо за пример.
но вот только если пользователь например введёт : "Yoshihiro Hanno meets Mick Karn - Liquid Glass".
я думал, может как-то объядинить оба поля во временную переменную и искать совпадения уже в этой переменной. вот только как это реализовать...

-~{}~ 05.12.04 03:06:

через временну переменную и реализовал, правда кривовато, если кому интересно - код выложу сюда.
 

Кром

Новичок
Если нужен поиск со сложными запросами последуй совету Bambuk.
Код, если он небольшой, выложи. Возможно кому и сгодится.
 

da_andy

Guest
$query="select * from mp3 order by artist";
$r=mysql_query($query);

for ($i=0;$i<mysql_num_rows($r);$i++):
$f=mysql_fetch_array($r);
$artist_album="$f[artist] $f[album] $f[label] $f[n]";
$album_artist="$f[album] $f[artist] $f[label] $f[n]";
if (preg_match("/$search/i", $artist_album, $match) or preg_match("/$search/i", $album_artist, $match)):
echo "$artist_album<br>";
endif;
endfor;

Если честно, я просто не в курсе, как реализуется полнотекстовый поиск.
 

Profic

just Profic (PHP5 BetaTeam)
da_andy
гораздо проще сделать все в SQL
[sql]
select * from table where @a:=CONCAT(artist,album) like '%Prodigy%' or @a like '%Breathe%'
[/sql]

а вообще FULLTEXT - это в поиск про полнотекстовый поиск :)
 

da_andy

Guest
2Profic: Просто огромнейшее спасибо, это именно то, что я искал!
 
Сверху