Bagaimana untuk menggunakan PHP Elasticsearch untuk melaksanakan fungsi carian berasaskan lokasi?
1. Pengenalan
Dengan perkembangan Internet, semakin banyak laman web dan aplikasi perlu melaksanakan fungsi carian berdasarkan lokasi geografi. Sebagai contoh, platform tempahan restoran perlu memaparkan restoran berdekatan berdasarkan lokasi semasa pengguna perlu memaparkan tarikan berdekatan berdasarkan lokasi berlepas pengguna, aplikasi navigasi peta perlu memaparkan tempat letak kereta di sekelilingnya berdasarkan destinasi pengguna; dan lain-lain tunggu. Kunci untuk mencapai fungsi ini ialah keupayaan untuk mencari dan mengisih dengan cekap berdasarkan maklumat lokasi geografi.
Elasticsearch ialah enjin carian sumber terbuka yang menyediakan keupayaan carian dan analisis teks penuh yang berkuasa melalui indeks terbalik dan teknologi carian teragih. Ia mempunyai fungsi carian lokasi geografi terbina dalam yang boleh mencari titik berdekatan berdasarkan koordinat latitud dan longitud.
2. Persediaan
Pasang perpustakaan klien PHP Elasticsearch
Pustaka klien PHP Elasticsearch ialah alat yang digunakan untuk berinteraksi dengan Elasticsearch. Anda boleh menggunakan Komposer untuk memasangnya dan melaksanakan arahan berikut:
composer require elasticsearch/elasticsearch
3 Cipta indeks dan pemetaan
Sebelum memulakan carian, anda perlu membuat indeks terlebih dahulu dan menyediakan pemetaan. . jenis medan dan atribut. Di sini kita perlu menambah pemetaan geolokasi untuk medan geolokasi. Kod sampel adalah seperti berikut:
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);
4 Tambah dokumen
Menggunakan perpustakaan klien PHP Elasticsearch, anda boleh menambah dokumen pada indeks dengan mengikuti langkah di bawah.
Sebelum menambah dokumen, anda perlu mendapatkan koordinat latitud dan longitud lokasi. Anda boleh menggunakan perpustakaan geokod pihak ketiga seperti Geocode.xyz atau MapQuest.
$params = [ 'index' => 'geolocation', 'body' => [ 'mappings' => [ 'properties' => [ 'location' => [ 'type' => 'geo_point', 'lat_lon' => true, 'geohash' => true, 'geohash_precision' => 5 ], ], ], ], ]; $response = $client->indices()->putMapping($params);
Tetapkan parameter carian
$params = [ 'index' => 'geolocation', 'id' => 1, 'body' => [ 'location' => [ 'lat' => 40.7128, 'lon' => -74.0060, ], 'name' => 'New York City', ], ]; $response = $client->index($params);
$params = [ 'index' => 'geolocation', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ 'match_all' => new stdClass(), ], 'filter' => [ 'geo_distance' => [ 'distance' => '30km', 'location' => [ 'lat' => 40.7143, 'lon' => -74.0060, ], ], ], ], ], ], ];
6. Ringkasan
Menggunakan PHP Elasticsearch untuk melaksanakan fungsi carian berdasarkan lokasi geografi boleh memberikan maklumat berkaitan lokasi geografi yang lebih tepat dan mudah untuk tapak web dan aplikasi. Fungsi ini mudah dicapai dengan menyediakan indeks dan pemetaan, menambah dokumen dan melakukan carian berasaskan geolokasi. Dalam aplikasi praktikal, pengisihan dan penapisan hasil carian boleh dioptimumkan lagi untuk meningkatkan pengalaman pengguna.Atas ialah kandungan terperinci Bagaimana untuk menggunakan php Elasticsearch untuk melaksanakan fungsi carian berasaskan lokasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!