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

  • Автор темы Автор темы da_andy
  • Дата начала Дата начала

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%'
 
А еще можно создасть полнотекстовый индекс по этим полям, и искать с помощью полнотекстового поиска. Будет быстрее и релевантность поиска повысится.
 
2Кром: спасибо за пример.
но вот только если пользователь например введёт : "Yoshihiro Hanno meets Mick Karn - Liquid Glass".
я думал, может как-то объядинить оба поля во временную переменную и искать совпадения уже в этой переменной. вот только как это реализовать...

-~{}~ 05.12.04 03:06:

через временну переменную и реализовал, правда кривовато, если кому интересно - код выложу сюда.
 
Если нужен поиск со сложными запросами последуй совету Bambuk.
Код, если он небольшой, выложи. Возможно кому и сгодится.
 
$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;

Если честно, я просто не в курсе, как реализуется полнотекстовый поиск.
 
da_andy
гораздо проще сделать все в SQL
[sql]
select * from table where @a:=CONCAT(artist,album) like '%Prodigy%' or @a like '%Breathe%'
[/sql]

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