>I am currently working on a website that is implemented using PHP and MySQL. > >The site currently has a simple search engine that allows a shopper to type >in a search string that is stored in $search. For example, if a shopper >types in 1972 Ford Mustang >$string ="1972 Ford Mustang" > >Using the following SQL statement: >SELECT * FROM whatevertable WHERE whatevercolumn LIKE '%$search% > >Records are returned that have this exact string and in this exact order >(I'm aware a wild card character is included on the front and back of the >string). > >My desire is to be able to logically AND each token of the search together >independent or the order of the tokens. >I want to return all records that have Mustang AND 1972 AND Ford. > >Since a shopper inputs the search string in advance I don't know how many >tokens will be used.
How about using OR and a ranked sorting so that the more words that match, the better? <?php if (!isset($start)){ $start = 0; # Or is it 1? MySQL/PostgreSQL do it differently. Grrrr. } $words = explode(' ', $search); $query = "select whatever, 0 "; while (list(,$word) = each($words)){ if (trim($word)){ $query .= " + whatevercolumn LIKE '%$word%' "; } } $query .= " as score "; $query .= " from sometable "; $query .= " where score > 0 "; $query .= " order by score desc "; $query .= " limit $start, $limit "; ?> Since LIKE returns TRUE/FALSE, when you "add them up" they turn into 1/0, and you get a one-point score for each matching word. -- Like Music? http://l-i-e.com/artists.htm I'm looking for a PRO QUALITY two-input sound card supported by Linux (any major distro). Need to record live events (mixed already) to stereo CD-quality. Soundcard Recommendations? Software to handle the recording? Don't need fancy mixer stuff. Zero (0) post-production time. Just raw PCM/WAV/AIFF 16+ bit, 44.1KHz, Stereo audio-to-disk. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php