Elasticsearch en PHP implémente la recherche de localisation géographique et les recommandations environnantes

WBOY
Libérer: 2023-10-03 09:22:01
original
1305 Les gens l'ont consulté

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

Elasticsearch implémente la recherche de localisation géographique et les recommandations environnantes en PHP

Résumé : La recherche de localisation géographique et les recommandations environnantes jouent un rôle essentiel dans de nombreuses applications Web. Elasticsearch est un puissant moteur de recherche open source qui offre des fonctionnalités riches et une flexibilité pour mettre en œuvre facilement des recherches de localisation géographique et des recommandations à proximité. Cet article explique comment utiliser PHP et Elasticsearch pour la recherche de localisation géographique et les recommandations à proximité, et fournit des exemples de code spécifiques.

Texte de l'article :

Introduction :
Avec la popularité de l'Internet mobile et des services de géolocalisation, la demande des utilisateurs pour des recherches et des recommandations basées sur des informations de géolocalisation augmente également. Qu'il s'agisse de recommandations de restaurants, de recherches d'entreprises à proximité ou de recommandations d'attractions touristiques, la recherche de localisation et les recommandations d'environnements sont devenues l'une des fonctions importantes de nombreuses applications Web. Elasticsearch est actuellement l'un des moteurs de recherche les plus populaires. Il fournit de riches fonctions de recherche de localisation géographique et de recommandations environnantes, et avec la combinaison parfaite de PHP, nous pouvons facilement implémenter ces fonctions.

Recherche de localisation géographique :
La recherche de géolocalisation consiste à rechercher des résultats liés à cet emplacement dans une plage donnée en spécifiant une coordonnée de localisation géographique. Par exemple, recherchez des restaurants ou des entreprises à une certaine distance. Tout d'abord, nous devons créer un index dans Elasticsearch avec un champ de géolocalisation. Voici l'exemple de code pour créer l'index :

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

$response = $client->indices()->create($params);
Copier après la connexion

Ensuite, nous pouvons stocker le nom du restaurant et les coordonnées de géolocalisation dans Elasticsearch. Voici un exemple de code pour stocker les documents dans l'index :

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

$response = $client->index($params);
Copier après la connexion

Lors de la recherche, nous pouvons filtrer les résultats à l'aide du paramètre de géolocalisation. Voici un exemple de code pour rechercher des restaurants en fonction d'une situation géographique et d'une distance données :

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

$response = $client->search($params);
Copier après la connexion

Recommandation environnante :
La recommandation environnante consiste à recommander les lieux ou services les plus proches à l'utilisateur en fonction de sa position actuelle. Dans Elasticsearch, nous pouvons utiliser l'agrégation de localisation géographique pour mettre en œuvre des recommandations à proximité. Voici l'exemple de code pour rechercher des restaurants à proximité en fonction d'une situation géographique donnée et les trier par distance :

$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);
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons le paramètre de tri _geo_distance pour trier les restaurants et préciser que l'unité de tri est le kilomètre.

Résumé :
En utilisant PHP et Elasticsearch combinés, nous pouvons facilement implémenter les fonctions de recherche de localisation géographique et de recommandations environnantes. Tout d’abord, nous devons créer un index avec un champ de géolocalisation. Nous pouvons ensuite stocker des informations de géolocalisation et effectuer une recherche à l'aide des paramètres de géolocalisation. Pour les recommandations à proximité, nous pouvons utiliser la fonction d'agrégation de géolocalisation et trier les résultats par distance. Ce qui précède est l'exemple de code de base, vous pouvez apporter les modifications appropriées en fonction des besoins réels. J'espère que cet article vous aidera à comprendre et à apprendre comment implémenter la recherche de localisation géographique et les recommandations environnantes à l'aide d'Elasticsearch en PHP.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!