Je sais que c'est une vieille question, mais vous devriez pouvoir mettre une expression entre parenthèses pour l'évaluer
SELECT *
FROM `cars`
WHERE `color` = "black"
OR `weight` = "heavy"
OR `type` = "limo"
ORDER BY ( (`color` = "black")
+ (`weight` = "heavy")
+ (`type` = "limo")
) DESC
Chaque expression entre parenthèses sera égale à 1 si vrai, 0 si faux ; donc dont la somme sera le nombre de correspondances.