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

王林
リリース: 2023-08-06 17:52:01
オリジナル
937 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!