ホームページ  >  記事  >  バックエンド開発  >  PHP の Elasticsearch は、地理的位置検索と周囲の推奨事項を実装します。

PHP の Elasticsearch は、地理的位置検索と周囲の推奨事項を実装します。

WBOY
WBOYオリジナル
2023-10-03 08:45:111293ブラウズ

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

PHP の Elasticsearch は、地理的位置の検索と周囲の推奨事項を実装します。

要約: 地理的位置の検索と周囲の推奨事項は、多くの Web アプリケーションで重要な役割を果たします。 Elasticsearch は、地理的位置の検索と近くの推奨事項を簡単に実装するための豊富な機能と柔軟性を提供する強力なオープンソース検索エンジンです。この記事では、PHP と Elasticsearch を使用して地理的位置と近くの推奨事項を検索する方法を紹介し、具体的なコード例を示します。

記事本文:

はじめに:
モバイルインターネットや地理的位置情報サービスの普及に伴い、地理的位置情報に基づく検索やレコメンデーションに対するユーザーの需要も高まっており、より高い。レストランのおすすめ、近隣のビジネス検索、観光スポットのおすすめなど、場所の検索と周辺のおすすめは、多くの Web アプリケーションの重要な機能の 1 つになっています。 Elasticsearch は現在最も人気のある検索エンジンの 1 つで、豊富な地理的位置検索や周辺レコメンデーション機能を備えており、PHP と組み合わせることでこれらの機能を簡単に実装できます。

地理的位置検索:
地理的位置検索は、地理的位置座標を指定して、指定された範囲内の位置に関連する結果を検索します。たとえば、一定の距離内にあるレストランや企業を検索します。まず、地理位置情報フィールドを使用して Elasticsearch にインデックスを作成する必要があります。インデックスを作成するサンプル コードは次のとおりです。

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

$response = $client->indices()->create($params);

次に、レストランの名前と地理的位置座標を Elasticsearch に保存できます。ドキュメントをインデックスに保存するサンプル コードは次のとおりです。

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

$response = $client->index($params);

検索時に、地理位置情報パラメーターを使用して結果をフィルターできます。以下は、指定された地理的位置と距離に基づいてレストランを検索するサンプル コードです:

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

$response = $client->search($params);

周辺のおすすめ:
周辺のおすすめはユーザーの現在位置に基づいており、ユーザーの現在地に最も近い場所やサービスを推奨します。ユーザー。 Elasticsearch では、地理的位置の集約を使用して近くの推奨事項を実装できます。指定された地理的位置に基づいて近くのレストランを検索し、距離によって並べ替えるサンプル コードを次に示します。

$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);

上記の例では、_geo_ distance 並べ替えパラメーターを使用してレストランを並べ替えます。単位はキロメートルです。

まとめ:
PHP と Elasticsearch を組み合わせて使用​​することで、地理的位置検索や周辺レコメンデーションの機能を簡単に実装できます。まず、地理位置情報フィールドを使用してインデックスを作成する必要があります。その後、地理位置情報を保存し、地理位置パラメータを使用して検索できます。近くの推奨事項については、地理位置情報集約機能を使用して、結果を距離別に並べ替えることができます。上記は基本的なサンプル コードです。実際のニーズに応じて適切に変更できます。この記事が、PHP で Elasticsearch を使用して地理的位置検索と周囲の推奨事項を実装する方法を理解し、学習するのに役立つことを願っています。

以上がPHP の Elasticsearch は、地理的位置検索と周囲の推奨事項を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。