Това работи със сигурност:
$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";
След това елементите от базата данни се сортират в низходящо състояние. Така че най-подходящият получава първо място.
забележка:Това работи добре само когато броят на ключовите думи е малък. Поради проверка 3 пъти за дължина за всяка ключова дума. Така че времето за реакция на по-големи таблици и повече ключови думи може да бъде малко по-различно;)