Bonjour à tous !
Tout d'abord merci à ceux qui prendront le temps de me lire
Je suis actuellement en train de développer une application web sous cake php (j'ai choisi ce forum car le projet ne concerne pas cake en lui même).
Je suis en train de chercher comment réaliser un système de recherche de lieux le plus optimisé possible, je vous explique son fonctionnement :
Précision technique : j'utilise l'API google pour un l'affichage d'une carte ainsi que tous les marqueurs qui seront retournés par la recherche.
En dessous de cette carte, j'ai la liste des lieux qui devront être classés du plus proche au plus éloigné ou bien du mieux au moins bien noté (ce sera au choix de l'utilisateur).
J'ai plusieurs lieux, de plusieurs types avec, pour chacun, des coordonnées (lat, lng) différentes ainsi qu'une adresse (plus à titre d'information).
Lieux1 type 2 Lat1 Lng2 AddressX
Lieux2 type 1 Lat3 Lng4 AddressY
Lieux3 type 2 Lat5 Lng6 AddressZ
L'utilisateur tapera sa recherche dans un formulaire : les informations qu'il devra renseigner pourront être :
- Le nom d'un pays,
- Le nom d'une ville,
- Le nom d'un lieu en particulier,
Et pourront cocher :
- Type 1
- Type 2
(ou les deux).
Je comptais utiliser l'API google (notamment geocode) afin de trouver les lat et lng du lieu recherché très facilement sans me casser la tête avec les fautes d'orthographes, une adresse incomplète, etc.
Via ces lat lng exportées de geocode je pensais effectuer ce calcul pour chaque lieu :
Distance = Rac{(Xb-Xa)^2+(Yb-Ya)^2}
En gros : La distance entre deux points sur le plan cartésien...
Puis les trier dans l'ordre de croissant de Distance (dans la limite de 100 lieux par exemple).
Mais me vient ce problème : dans l'hypothèse où je me retrouve avec, par exemple, 20000 lieux, le calcul devra se faire sur les 20000 lieux ... et c'est environs 14h qu'il faudra à ma page pour se charger lol
Le resultat final pour l'utilisateur est, (après avoir renseigner un pays, une ville, ou un adresse sur le formulaire) d'avoir les lieux (stockés en bdd) les plus proches de cette recherche dans un rayon, de préférence, paramètrable
Donc je me retourne vers le profession afin de trouver une solution, une technologique, une technique, un indice qui pourrait m'aider dans la résolution de ce problème !
N'hésitez pas si vous avez des questions,
Merci infiniment pour vos réponses,
Bien à vous,
Quentin.
Partager