Omdat ik momenteel in mijn tabel slechts ongeveer 5k rijen heb en ze langzaam groeien, besloot ik om de volgende eenvoudige benadering te gebruiken (het kwam bij me op net nadat ik de vraag had geschreven).
Laten we zeggen Honda Accord (model_id 456), 2004, benzine, 2.0L, 155 pk, sedan met 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
Het zal werken, zolang ik niet te veel rijen heb. Als de tafel 50-100k wordt, zal ik waarschijnlijk moeten overschakelen naar iets als Lucene
?