Wie verwende ich PHP Elasticsearch, um eine standortbasierte Suchfunktion zu implementieren?
1. Einführung
Mit der Entwicklung des Internets müssen immer mehr Websites und Anwendungen Suchfunktionen basierend auf dem geografischen Standort implementieren. Beispielsweise muss eine Restaurant-Bestellplattform nahe gelegene Restaurants basierend auf dem aktuellen Standort des Benutzers anzeigen; eine Reise-Website muss nahegelegene Sehenswürdigkeiten basierend auf dem Startpunkt des Benutzers anzeigen; eine Kartennavigationsanwendung muss umliegende Parkplätze basierend auf dem Ziel des Benutzers anzeigen; usw. warten. Der Schlüssel zum Erreichen dieser Funktionalität ist die Fähigkeit, basierend auf geografischen Standortinformationen effizient zu suchen und zu sortieren.
Elasticsearch ist eine Open-Source-Suchmaschine, die leistungsstarke Volltextsuch- und Analysefunktionen durch invertierte Index- und verteilte Suchtechnologie bietet. Es verfügt über eine integrierte Suchfunktion für geografische Standorte, mit der anhand von Breiten- und Längenkoordinaten nach Punkten in der Nähe gesucht werden kann.
2. Vorbereitung
Installieren Sie die PHP Elasticsearch-Clientbibliothek
Die PHP Elasticsearch-Clientbibliothek ist ein Tool zur Interaktion mit Elasticsearch. Mit Composer können Sie den folgenden Befehl installieren und ausführen:
composer require elasticsearch/elasticsearch
3. Index und Mapping erstellen
Bevor Sie mit der Suche beginnen, müssen Sie zunächst den Index erstellen und das Mapping einrichten.
Index erstellen
Verwenden Sie die von Elasticsearch bereitgestellte PHP-Client-Bibliothek, um einen Index zu erstellen. Der Beispielcode lautet wie folgt:
require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'geolocation', 'body' => [ 'settings' => [ 'index' => [ 'number_of_shards' => 1, 'number_of_replicas' => 0, ], ], ], ]; $response = $client->indices()->create($params);
Zuordnung einrichten
Bevor Sie Dokumente zum Index hinzufügen, müssen Sie die Zuordnung definieren von Feldtypen und Attributen. Hier müssen wir eine Geolocation-Zuordnung für das Geolocation-Feld hinzufügen. Der Beispielcode lautet wie folgt:
$params = [ 'index' => 'geolocation', 'body' => [ 'mappings' => [ 'properties' => [ 'location' => [ 'type' => 'geo_point', 'lat_lon' => true, 'geohash' => true, 'geohash_precision' => 5 ], ], ], ], ]; $response = $client->indices()->putMapping($params);
4. Dokumente hinzufügen
Mit der PHP-Clientbibliothek von Elasticsearch können Sie Dokumente zum Index hinzufügen, indem Sie die folgenden Schritte ausführen.
Dokumente hinzufügen
Verwenden Sie die PHP-Clientbibliothek von Elasticsearch, um den Namen sowie die Breiten- und Längenkoordinaten des Ortes zum Index hinzuzufügen. Der Beispielcode lautet wie folgt:
$params = [ 'index' => 'geolocation', 'id' => 1, 'body' => [ 'location' => [ 'lat' => 40.7128, 'lon' => -74.0060, ], 'name' => 'New York City', ], ]; $response = $client->index($params);
5. Suche basierend auf dem geografischen Standort
Durch Festlegen von Suchabfrageparametern können Sie basierend auf dem geografischen Standort suchen.
Suchparameter festlegen
$params = [ 'index' => 'geolocation', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ 'match_all' => new stdClass(), ], 'filter' => [ 'geo_distance' => [ 'distance' => '30km', 'location' => [ 'lat' => 40.7143, 'lon' => -74.0060, ], ], ], ], ], ], ];
Suche durchführen
$response = $client->search($params); foreach ($response['hits']['hits'] as $hit) { echo $hit['_id']. ': '. $hit['_source']['name']. PHP_EOL; }
Dieser Code gibt Dokumente im Umkreis von 30 Kilometern um die angegebenen Breiten- und Längenkoordinaten (New York City) zurück. Durchsuchen Sie die Suchergebnisse, um die Namen von Orten zu erhalten, die den Kriterien entsprechen.
6. Zusammenfassung
Die Verwendung von PHP Elasticsearch zur Implementierung einer Suchfunktion basierend auf dem geografischen Standort kann genauere und bequemere geografische Standortinformationen für Websites und Anwendungen bereitstellen. Diese Funktionalität lässt sich ganz einfach durch das Einrichten von Indizes und Zuordnungen, das Hinzufügen von Dokumenten und das Durchführen geolokalisierungsbasierter Suchen erreichen. In praktischen Anwendungen kann die Sortierung und Filterung von Suchergebnissen weiter optimiert werden, um das Benutzererlebnis zu verbessern.
Das obige ist der detaillierte Inhalt vonWie verwende ich PHP Elasticsearch, um eine standortbasierte Suchfunktion zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!