developpement du moteur de recherche

WRInaute discret
Bonjour,
Je doit réaliser un moteur de recherche ressemblant à celui de h**p://www.paruvendu.fr/auto-moto/recherche/voiture/
en faite ce qui m'interesse vraiment dans ce moteur est la notion de "proximité". En effet il permettent à leurs visiteurs de rechercher à proximité d'une ville (15km ou 30km ou 100km ou 200km) .
A votre avis comment font ils?
est ce à l'aide de google maps?
Merci d'avance de votre aide
 
WRInaute passionné
1/ La liste des villes géolocalisées en base de donnée

2/ chaque annonce géolocalisée (par la ville j'imagine)

et un calcul de distance entre deux points.
 
WRInaute discret
jeroen a dit:
1/ La liste des villes géolocalisées en base de donnée

2/ chaque annonce géolocalisée (par la ville j'imagine)

et un calcul de distance entre deux points.



Comment faire le calcul de distance (même à vol d'oiseau finstreet) pour chaque ville sachant qu'il y a plus 30000 villes en france. pensez vous qu'il faille stocker chaque calcul ou faut il faire le calcul à chaque fois?
 
WRInaute accro
tu peux pas faire les calculs avant... je n'ose imaginer la tete du serveur qui devra faire ca... mais quand un internaute fait une requete, ca l'enregistre ou la met en cache, non ?
 
WRInaute accro
finstreet a dit:
tu peux pas faire les calculs avant... je n'ose imaginer la tete du serveur qui devra faire ca...

Factorielle 29999, si je ne me trompe pas. Ce n'est plus un serveur, c'est un supercalculateur !
Non, faut faire du cas par cas, pas de doute.
 
WRInaute occasionnel
Essaye d'utiliser les points GPS fourni par GOOGLE quand ton client tape une ville. Avec leur algo tu arrive a déterminé le point GPS, puis calculer la distance entre 2 points GPS, donc entre 2 villes
 
WRInaute discret
OTP, pense tu qu'a chaque requette il faille faire le calcul sur les 30000 villes cela me parait trop conséquent car s'il y a plusieurs requettes simultanée le serveur va imploser :(


Zelkin cela veut dire que pour chaque requette je dois interroger google?
 
WRInaute accro
Et pour calculer la distance entre 2 coordonnées GPS en PHP:
Code:
function getGPSDistance($long1, $lat1, $long2, $lat2)
{
   $earth_radius = 6367000;   // Terre = sphère de 6367km de rayon
   $rlo1 = deg2rad($long1);
   $rla1 = deg2rad($lat1);
   $rlo2 = deg2rad($long2);
   $rla2 = deg2rad($lat2);

   $dlo = ($rlo2 - $rlo1) / 2;
   $dla = ($rla2 - $rla1) / 2;
   $a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
   $d = 2 * atan2(sqrt($a), sqrt(1 - $a));

   return ($earth_radius * $d);
}

Et cette formule en SQL:
http://www.awelty.fr/e-monsite/php/
 
WRInaute accro
contre exemple a dit:
OTP, pense tu qu'a chaque requette il faille faire le calcul sur les 30000 villes cela me parait trop conséquent car s'il y a plusieurs requettes simultanée le serveur va imploser :(


Zelkin cela veut dire que pour chaque requette je dois interroger google?

Quand ton internaute tape une ville. Tu vas pas lui coller les distances par rapport aux 30.000 communes non ?

Et sinon comme dis plus haut, toute requete faite reste en cache mémoire, donc par la suite, elle prendra quasi 0 seconde à être calculée
 
WRInaute accro
contre exemple a dit:
OTP, pense tu qu'a chaque requette il faille faire le calcul sur les 30000 villes cela me parait trop conséquent car s'il y a plusieurs requettes simultanée le serveur va imploser :(


Zelkin cela veut dire que pour chaque requette je dois interroger google?

Faudrait pas plutôt boucler sur les annonces plutôt que sur les villes ???
Parce que d'ici à avoir 36000 annonces par thématique de recherche, tu as de la marge.
 
Discussions similaires
Haut