Da ich in meiner Tabelle derzeit nur etwa 5.000 Zeilen habe und sie langsam wachsen, habe ich mich entschieden, den folgenden einfachen Ansatz zu verwenden (er fiel mir ein, kurz nachdem ich die Frage geschrieben hatte).
Der Seed ist beispielsweise Honda Accord (model_id 456), 2004, Benzin, 2,0 l, 155 PS, Limousine mit Auto-Inc-ID 123.
SELECT vehicles.*,
(IF(`fuel_type`='gasoline', 3, 0) +
IF(`body_style`='sedan', 1, 0) +
IF(`year` > 2001 AND `year` < 2007, 2, 0) +
IF(`engine_size` >= 1.8 AND `engine_size` <= 2.2, 1, 0) +
IF(`engine_power`=155, 3, IF(`engine_power`>124 AND `engine_power`<186, 1, 0))) AS `rank`
FROM vehicles
WHERE vehicle_id!=123 AND model_id=456
ORDER BY `rank` DESC
LIMIT 3
Es wird funktionieren, solange ich nicht zu viele Zeilen mache. Wenn die Tabelle 50-100k wird, muss ich wahrscheinlich zu etwas wie Lucene
wechseln ?