ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Manticore Search を使用して位置情報検索機能を開発する

PHP と Manticore Search を使用して位置情報検索機能を開発する

王林
王林オリジナル
2023-08-06 17:51:201002ブラウズ

PHP と Manticore Search を使用した地理的位置検索機能の開発

インターネットの発展に伴い、地理的位置検索機能は多くのアプリケーションでますます重要になってきました。オンライン マップ、交通ナビゲーション、ビジネス レコメンデーションなどのアプリケーションであっても、地理的位置検索はかけがえのない役割を果たします。この記事では、PHP と Manticore Search を使用して位置情報検索機能を開発する方法を紹介します。

Manticore Search は、Sphinx 検索エンジンのフォークをベースにした強力な全文検索エンジンです。マンティコア検索は、位置情報検索を含むさまざまな検索機能をサポートしています。地理位置座標を使用して、地理位置データの保存と検索を行います。したがって、これを使用して位置情報検索機能を実装できます。

まず、Manticore Search をインストールする必要があります。 Manticore Search の公式 Web サイト (https://manticoresearch.com) にアクセスして、最新バージョンをダウンロードしてインストールできます。インストールが完了したら、インデックスを作成し、地理位置情報フィールドを設定する必要があります。

PHP では、ManticoreSearch ライブラリを使用して Manticore Search と対話できます。まず、Composer を使用して ManticoreSearch ライブラリをインストールする必要があります。ターミナルで、プロジェクト ディレクトリに移動し、次のコマンドを実行します。

composer require manticoresearch/manticoresearch-php

インストールが完了したら、地理位置情報検索機能を実装するコードの記述を開始できます。ユーザーが現在地に基づいて近くのビジネスを検索できるビジネス ディレクトリ アプリがあるとします。

まず、地理位置情報フィールドを含むインデックスを作成する必要があります。フィールド名が「location」、タイプが「spatial」であるとします。 ManticoreSearch ライブラリによって提供されるメソッドを使用してインデックスを作成できます。次のコードは、インデックスの作成方法を示しています。

require_once 'vendor/autoload.php';

use ManticoresearchClient;
use ManticoresearchExceptionsRuntimeException;

// 创建客户端实例
$client = new Client();

try {
    // 建立与搜索引擎的连接
    $client->connect();

    // 创建索引
    $client->indices()->create(['index' => 'stores']);

    // 设置地理位置字段
    $client->indices()->updateSettings([
        'index' => 'stores',
        'body' => [
            'attributes' => [
                'location' => ['type' => 'geopoint'],
            ],
        ],
    ]);
    
} catch (RuntimeException $e) {
    echo "出现错误:" . $e->getMessage();
}

次に、販売者の地理的位置データをインデックスに保存する必要があります。名前と地理的位置座標を含む企業のリストがあるとします。 ManticoreSearch ライブラリが提供するメソッドを使用して、このデータをインデックスに保存できます。次のコードは、ビジネス データを保存する方法を示しています。

// 假设我们有一个包含商家名称和地理位置坐标的数组
$stores = [
    ['name' => '商家A', 'latitude' => 39.9042, 'longitude' => 116.4074],
    ['name' => '商家B', 'latitude' => 31.2304, 'longitude' => 121.4737],
    // ...
];

foreach ($stores as $store) {
    $data = [
        'name' => $store['name'],
        'location' => [
            'lat' => $store['latitude'],
            'lon' => $store['longitude'],
        ],
    ];
    
    try {
        // 添加文档到索引中
        $client->index('stores')->add($data);
    } catch (RuntimeException $e) {
        echo "存储数据时出现错误:" . $e->getMessage();
    }
}

ビジネス データが保存されたので、位置情報検索機能の実装を開始できます。次のコードは、ユーザーの地理的位置座標に基づいて近くのビジネスを検索する方法を示しています。

try {
    // 设置搜索参数
    $params = [
        'index' => 'stores',
        'body' => [
            'query' => [
                'bool' => [
                    'filter' => [
                        'geo_distance' => [
                            'distance' => '10km',
                            'location' => [
                                'lat' => $userLatitude,
                                'lon' => $userLongitude,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ];
    
    // 执行搜索查询
    $result = $client->search($params);
    
    // 处理搜索结果
    foreach ($result['hits']['hits'] as $hit) {
        echo $hit['_source']['name'] . "
";
    }
    
} catch (RuntimeException $e) {
    echo "搜索时出现错误:" . $e->getMessage();
}

上記のコードでは、geo_ distance フィルターを使用して、ユーザーの地理的位置座標に基づいて近くのビジネスを検索します。ユーザーの現在位置。ニーズに応じて検索範囲を調整できます。

上記の手順により、PHP と Manticore Search を使用した地理的位置検索機能の開発に成功しました。ユーザーは、自分の位置に基づいて近くのお店を検索できるようになりました。ビジネス詳細ページやユーザーコメントの追加など、機能を拡張し続けることができます。

概要:
この記事では、PHP と Manticore Search を使用して位置情報検索機能を開発する方法を紹介しました。 Manticore Search を使用してインデックスを作成し、データを保存し、検索クエリを実行するプロセスを理解することで、ニーズに基づいた強力な地理的位置検索機能を簡単に開発できます。私はあなたの成功を祈って!

以上がPHP と Manticore Search を使用して位置情報検索機能を開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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