Da jeg i min tabel i øjeblikket kun har omkring 5k rækker, og de vokser langsomt, besluttede jeg faktisk at bruge følgende enkle tilgang (det kom til mig lige efter jeg skrev spørgsmålet).
Frøet kan sige er Honda Accord (model_id 456), 2004, benzin, 2.0L, 155 hk, sedan med 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
Det vil virke, så længe jeg ikke har for mange rækker. Hvis tabellen bliver 50-100k, bliver jeg sandsynligvis nødt til at skifte til noget som Lucene
?