Mysql
 sql >> Database >  >> RDS >> Mysql

Ottenere le righe più simili nella tabella MySQL e ordinarle per somiglianza

Poiché nella mia tabella attualmente ho solo circa 5.000 righe e stanno crescendo lentamente, ho deciso di utilizzare effettivamente il seguente semplice approccio (mi è venuto in mente subito dopo aver scritto la domanda).

Il seme diciamo è Honda Accord (model_id 456), 2004, benzina, 2.0L, 155cv, berlina con ID auto-inc 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

Funzionerà, fintanto che non faccio troppe righe. Se la tabella diventa 50-100k, probabilmente dovrò passare a qualcosa come Lucene ?