Detta fungerar säkert:
$searchCondition = "description LIKE '%" . implode("%' OR description LIKE '%", $searchTerms) . "%'";
$orderCondition = array();
foreach ($searchTerms as $word) {
$orderCondition[] = "(length(description)-length(replace(description,\"".$word."\",\"\")))/length(\"".$word."\")";
}
$orderConditionString = "(".implode(" + ", $orderCondition).")";
$query = "SELECT description FROM table1 WHERE $searchCondition ORDER BY $orderConditionString DESC";
Objekten från databasen sorteras sedan i fallande. Så den mest relevanta får förstaplatsen.
Obs:Detta fungerar bara bra när antalet nyckelord är litet. På grund av att du kontrollerar längden tre gånger för varje sökord. Så svarstiden på större tabeller och fler sökord kan vara lite annorlunda;)