Maison >développement back-end >tutoriel php >Recherche géospatiale avec Solr et Solarium

Recherche géospatiale avec Solr et Solarium

William Shakespeare
William Shakespeareoriginal
2025-02-19 08:41:13833parcourir

Cet article plonge dans la recherche géospatiale dans Apache Solr et son interaction avec la bibliothèque Solarium PHP. Solr, un puissant service de recherche, propose des fonctionnalités telles que la recherche à facettes et la mise en évidence des résultats. Le solarium simplifie l'intégration SOLR dans les applications PHP. Cet article se concentre sur les capacités de recherche géospatiale, cruciale pour les requêtes basées sur la localisation dans des secteurs comme l'immobilier et la logistique.

Geospatial Search with SOLR and Solarium

Concepts clés:

  • Recherches basées sur la localisation: solr et solarium permettent des recherches efficaces de documents dans un rayon spécifié d'un point donné.
  • Configuration du schéma: La mise en œuvre de la recherche géospatiale nécessite des ajustements pour Solr schema.xml, y compris la définition d'un type de champ location avec des sous-champs de latitude et de longitude.
  • Rôle du solarium: La bibliothèque de solarium simplifie la construction de la requête géospatiale, l'abstraction de la syntaxe complexe SOLR. Il fournit des fonctions d'assistance pour le filtrage à distance et le tri de proximité.
  • Exemple d'application: Une démonstration pratique présente la recherche d'aéroports à proximité à l'aide de SOLR et de solarium, illustrant la configuration du schéma, l'attribution des données et la fonctionnalité de recherche.
  • Optimisation des performances: Des techniques comme l'utilisation du filtre "BBOX" (plus rapide, moins précis) ou le type de champ "RPT" (haute performance pour les grands ensembles de données) améliorent l'efficacité de recherche géospatiale.

La recherche géospatiale a expliqué:

La recherche géospatiale répond à la nécessité de rechercher des éléments situés géographiquement. Trouver des "restaurants italiens" est utile, mais spécifier des "restaurants italiens à moins de 5 miles" ajoute un contexte crucial. Cela implique d'utiliser des coordonnées de latitude et de longitude pour définir des points sur le globe.

L'exemple d'application utilise trois méthodes pour déterminer l'origine de la recherche: géolocalisation HTML5 (emplacement basé sur le navigateur), une liste prédéfinie des villes et une entrée de latitude manuelle / longitude.

Configuration du schéma:

Activer les capacités géospatiales dans SOLR nécessite des modifications à schema.xml. Un type de champ location est ajouté en utilisant la classe solr.LatLonType, avec la latitude et la longitude comme sous-champs (tdouble type). Un champ correspondant (par exemple, latlon) est défini pour stocker les données de localisation, et un champ dynamique gère les composants de latitude et de longitude. Un exemple schema.xml est inclus dans le référentiel de l'application exemple.

attribuer des données de localisation:

Les données de localisation sont attribuées au format {latitude},{longitude}. En utilisant le solarium, cela est réalisé avec: $doc->latlon = doubleval($latitude) . "," . doubleval($longitude);

requêtes géospatiales avec le solarium:

Les aides de Solarium simplifient la création de requête. Un filtre de distance est ajouté en utilisant $helper->geofilt(), spécifiant le champ, la latitude, la longitude et la distance. L'assistance geodist() calcule les distances et les alias (par exemple, _distance_) aident à récupérer les distances dans les résultats. Le tri par distance est effectué en utilisant $query->setQuery('{!func}' . $helper->geodist(...)) et $query->addSort('score', 'asc');.

Exemple d'application:

Le référentiel GitHub fourni (lien omis pour la concision) contient une application SILEX et BIGE présentant une recherche géospatiale pour les aéroports voisins à l'aide de données d'OpenFlights.org. Le script de population de données est également inclus. L'application dispose d'un formulaire de recherche avec des options d'entrée de localisation (géolocalisation, sélection de la ville, entrée manuelle) et sélection de distance. Les résultats de la recherche affichent les noms, les villes, les pays et les distances des aéroports.

Conclusion:

Cet article fournit un guide complet de mise en œuvre de la recherche géospatiale à l'aide de SOLR et de solarium. L'exemple d'application présente la mise en œuvre pratique et montre comment combiner des recherches textuelles et géospatiales pour des résultats plus raffinés.

Questions fréquemment posées (FAQ): (La section FAQ d'origine est conservée dans son intégralité car elle fournit des informations supplémentaires précieuses.)

Quelle est la signification de la recherche géospatiale dans le solr et le solarium?

Comment SOLR gère-t-il les données géospatiales?

Comment puis-je effectuer une recherche géospatiale dans le solarium?

Quelle est la différence entre les filtres «géofilt» et «bbox» dans le solarium?

Comment puis-je trier les documents par distance dans Solr?

Puis-je effectuer une recherche géospatiale sur plusieurs champs de Solr?

Comment puis-je améliorer les performances de la recherche géospatiale dans Solr?

Quel est le rôle du "SpatialRecursivePrefixTreeFieldType" dans Solr?

Comment SOLR gère-t-il les champs de localisation à valeur multiple?

Puis-je utiliser la recherche géospatiale avec d'autres types de recherche dans Solr?

Les réponses à ces FAQ sont incluses dans l'entrée d'origine et ne sont pas répétées ici par concision.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn