Elasticsearch in PHP implementiert die Suche nach geografischen Standorten und umliegenden Empfehlungen

WBOY
Freigeben: 2023-10-03 09:22:01
Original
1305 Leute haben es durchsucht

PHP 中 Elasticsearch 实现地理位置搜索与周边推荐

Elasticsearch implementiert die geografische Standortsuche und Umgebungsempfehlungen in PHP

Zusammenfassung: Die geografische Standortsuche und Umgebungsempfehlungen spielen in vielen Webanwendungen eine wichtige Rolle. Elasticsearch ist eine leistungsstarke Open-Source-Suchmaschine, die umfangreiche Funktionen und Flexibilität bietet, um geografische Standortsuchen und Empfehlungen in der Nähe einfach zu implementieren. In diesem Artikel wird die Verwendung von PHP und Elasticsearch für die Suche nach geografischen Standorten und Empfehlungen in der Nähe vorgestellt und spezifische Codebeispiele bereitgestellt.

Artikeltext:

Einleitung:
Mit der Beliebtheit von mobilem Internet und Geolokalisierungsdiensten steigt auch die Nachfrage der Nutzer nach Suchen und Empfehlungen auf Basis von Geolokalisierungsinformationen. Ob es sich um Restaurantempfehlungen, die Suche nach Unternehmen in der Nähe oder um Empfehlungen zu Touristenattraktionen handelt, die Standortsuche und Umgebungsempfehlungen sind zu einer wichtigen Funktion vieler Webanwendungen geworden. Elasticsearch ist derzeit eine der beliebtesten Suchmaschinen. Sie bietet umfassende geografische Standortsuche und Umgebungsempfehlungsfunktionen, und mit der perfekten Kombination von PHP können wir diese Funktionen problemlos implementieren.

Geografische Standortsuche:
Bei der Geostandortsuche wird nach Ergebnissen gesucht, die sich auf diesen Standort innerhalb eines bestimmten Bereichs beziehen, indem eine geografische Standortkoordinate angegeben wird. Suchen Sie beispielsweise nach Restaurants oder Geschäften in einer bestimmten Entfernung. Zuerst müssen wir in Elasticsearch einen Index mit einem Geolocation-Feld erstellen. Hier ist der Beispielcode zum Erstellen des Index:

$params = [
    'index' => 'restaurants',
    'body'  => [
        'mappings' => [
            '_doc' => [
                'properties' => [
                    'name' => [
                        'type' => 'text',
                    ],
                    'location' => [
                        'type' => 'geo_point',
                    ],
                ],
            ],
        ],
    ],
];

$response = $client->indices()->create($params);
Nach dem Login kopieren

Als nächstes können wir den Namen des Restaurants und die Geolokalisierungskoordinaten in Elasticsearch speichern. Hier ist ein Beispielcode zum Speichern von Dokumenten im Index:

$params = [
    'index' => 'restaurants',
    'type'  => '_doc',
    'body'  => [
        'name'     => 'Restaurant A',
        'location' => [
            'lat' => 40.7128,
            'lon' => -74.0060,
        ],
    ],
];

$response = $client->index($params);
Nach dem Login kopieren

Bei der Suche können wir die Ergebnisse mithilfe des Geolocation-Parameters filtern. Das Folgende ist ein Beispielcode für die Suche nach Restaurants basierend auf einem bestimmten geografischen Standort und einer bestimmten Entfernung:

$params = [
    'index' => 'restaurants',
    'body'  => [
        'query' => [
            'bool' => [
                'filter' => [
                    'geo_distance' => [
                        'distance' => '1km',
                        'location' => [
                            'lat' => 40.7128,
                            'lon' => -74.0060,
                        ],
                    ],
                ],
            ],
        ],
    ],
];

$response = $client->search($params);
Nach dem Login kopieren

Umgebungsempfehlung:
Umgebungsempfehlung bedeutet, dem Benutzer basierend auf seinem aktuellen Standort die nächstgelegenen Orte oder Dienstleistungen zu empfehlen. In Elasticsearch können wir die geografische Standortaggregation nutzen, um Empfehlungen in der Nähe umzusetzen. Hier ist der Beispielcode, um anhand eines bestimmten geografischen Standorts nach Restaurants in der Nähe zu suchen und diese nach Entfernung zu sortieren:

$params = [
    'index' => 'restaurants',
    'body'  => [
        'query' => [
            'match_all' => [],
        ],
        'sort'  => [
            '_geo_distance' => [
                'location' => [
                    'lat' => 40.7128,
                    'lon' => -74.0060,
                ],
                'order'  => 'asc',
                'unit'   => 'km',
            ],
        ],
        'size'  => 10,
    ],
];

$response = $client->search($params);
Nach dem Login kopieren

Im obigen Beispiel verwenden wir den Sortierparameter _geo_distance, um die Restaurants zu sortieren und geben an, dass die Sortiereinheit Kilometer sind.

Zusammenfassung:
Durch die kombinierte Verwendung von PHP und Elasticsearch können wir die Funktionen der geografischen Standortsuche und Umgebungsempfehlungen problemlos implementieren. Zuerst müssen wir einen Index mit einem Geolocation-Feld erstellen. Anschließend können wir Geolokalisierungsinformationen speichern und mithilfe von Geolokalisierungsparametern suchen. Für Empfehlungen in der Nähe können wir die Geolocation-Aggregationsfunktion verwenden und die Ergebnisse nach Entfernung sortieren. Das Obige ist der grundlegende Beispielcode. Sie können entsprechend den tatsächlichen Anforderungen entsprechende Änderungen vornehmen. Ich hoffe, dieser Artikel hilft Ihnen zu verstehen und zu lernen, wie Sie die Suche nach geografischen Standorten und Umgebungsempfehlungen mithilfe von Elasticsearch in PHP implementieren.

Das obige ist der detaillierte Inhalt vonElasticsearch in PHP implementiert die Suche nach geografischen Standorten und umliegenden Empfehlungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!