>I'm trying to take a variable in that would be usually 3 to 4 words (could
>be more or could be less).  Right now, I'm exploding the variable and
>testing each individually, but this obviously is a pain with the more
>variables you get, and the result I get from the mysql search doesn't give
>me enough info to compare the outputs and then just give matching outputs.
>Am I looking at the result of the query wrong?  Is there a function that
>does this?  Any suggestions?

Cheat :-)

The "LIKE" operator and "=" and all the other ones that fit in a WHERE
clause will automagically turn into 1/0 for TRUE/FALSE.

So you can give an easy "point" system to your search for multiple words:

<?php
  $search = "three or four words";
  $words = explode(' ', $search);
  $query = "select 0 "; # A sort of "yeast" or "seed" to start off our
scoring
  while (list( ,$word) = each($words)){
    $query .= " + (whatever like '%$word%') "; # Give 1 point for like
"match"
    $query .= " + 2 * (whatever = '%$word%') "; # Give 2 *extra* points for
perfect match (3 total)
  }
  $query .= " as score "; # The total sum will get called 'score' in the
query
  $query .= " , column1, column2, column3 "; # Include whatever you need to
display the list
  $query .= " from tablewhatever ";
  $query .= " where score > 0 "; # Don't bother with a non-match
  $query .= " order by score desc "; # Rank the scores high to low
(descending)
  $matches = mysql_query($query) or error_log(mysql_error()); # Check Apache
error_log for trouble!
  while (list($score, $column1, $column2, $column3) =
mysql_fetch_row($matches)){
    echo "$score: $column1, $column2, $column3<BR>\n";
  }
?>



-- 
Like Music?  http://l-i-e.com/artists.htm


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to