Heim  >  Artikel  >  Backend-Entwicklung  >  Entwickeln Sie Geolocation-Suchfunktionen mit PHP und Manticore Search

Entwickeln Sie Geolocation-Suchfunktionen mit PHP und Manticore Search

王林
王林Original
2023-08-06 17:51:20967Durchsuche

Entwickeln Sie eine Geolocation-Suchfunktion mit PHP und Manticore Search

Mit der Entwicklung des Internets wird die Geolocation-Suchfunktion in vielen Anwendungen immer wichtiger. Ob es um Anwendungen wie Online-Karten, Verkehrsnavigation oder Geschäftsempfehlungen geht, die geografische Standortsuche spielt eine unersetzliche Rolle. In diesem Artikel stellen wir vor, wie Sie mithilfe von PHP und Manticore Search eine Geostandort-Suchfunktion entwickeln.

Manticore Search ist eine leistungsstarke Volltextsuchmaschine, die auf einem Fork der Sphinx-Suchmaschine basiert. Manticore Search unterstützt verschiedene Suchfunktionen, einschließlich der Geolokalisierungssuche. Es verwendet Geolokalisierungskoordinaten zum Speichern und Durchsuchen von Geolokalisierungsdaten. Daher können wir es verwenden, um die Geolocation-Suchfunktion zu implementieren.

Zuerst müssen wir Manticore Search installieren. Sie können die offizielle Website von Manticore Search (https://manticoresearch.com) besuchen, um die neueste Version herunterzuladen und zu installieren. Sobald die Installation abgeschlossen ist, müssen wir einen Index erstellen und das Geolocation-Feld einrichten.

In PHP können wir die ManticoreSearch-Bibliothek verwenden, um mit Manticore Search zu interagieren. Zuerst müssen wir die ManticoreSearch-Bibliothek mit Composer installieren. Navigieren Sie im Terminal zu Ihrem Projektverzeichnis und führen Sie den folgenden Befehl aus:

composer require manticoresearch/manticoresearch-php

Sobald die Installation abgeschlossen ist, können wir mit dem Schreiben von Code zur Implementierung der Geolocation-Suchfunktion beginnen. Nehmen wir an, wir haben eine Branchenverzeichnis-App, mit der Benutzer anhand ihres aktuellen Standorts nach Unternehmen in der Nähe suchen können.

Zuerst müssen wir einen Index erstellen, der das Geolocation-Feld enthält. Gehen Sie davon aus, dass der Feldname „Standort“ und der Typ „räumlich“ lautet. Wir können die von der ManticoreSearch-Bibliothek bereitgestellten Methoden verwenden, um Indizes zu erstellen. Der folgende Code zeigt, wie man einen Index erstellt:

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();
}

Als nächstes müssen wir die Geolokalisierungsdaten des Händlers im Index speichern. Nehmen wir an, wir haben eine Liste von Unternehmen, die deren Namen und geografische Standortkoordinaten enthält. Wir können diese Daten mithilfe der von der ManticoreSearch-Bibliothek bereitgestellten Methoden im Index speichern. Der folgende Code zeigt, wie Geschäftsdaten gespeichert werden:

// 假设我们有一个包含商家名称和地理位置坐标的数组
$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();
    }
}

Nachdem die Geschäftsdaten nun gespeichert sind, können wir mit der Implementierung der Geolocation-Suchfunktion beginnen. Der folgende Code zeigt, wie auf der Grundlage der geografischen Standortkoordinaten des Benutzers nach Unternehmen in der Nähe gesucht wird:

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();
}

Im obigen Code verwenden wir den geo_distance-Filter, um Unternehmen im Umkreis von 10 Kilometern um den aktuellen Standort des Benutzers zu filtern. Sie können den Suchradius entsprechend Ihren Bedürfnissen anpassen.

Durch die oben genannten Schritte haben wir die Suchfunktion für geografische Standorte mit PHP und Manticore Search erfolgreich entwickelt. Benutzer können jetzt basierend auf ihrem Standort nach Unternehmen in der Nähe suchen. Sie können die Funktionen weiter erweitern, z. B. Seiten mit Geschäftsdetails, Benutzerkommentare usw. hinzufügen.

Zusammenfassung:
In diesem Artikel haben wir vorgestellt, wie man PHP und Manticore Search verwendet, um Geolocation-Suchfunktionen zu entwickeln. Wenn Sie den Prozess der Verwendung von Manticore Search zum Erstellen von Indizes, zum Speichern von Daten und zum Durchführen von Suchabfragen verstehen, können Sie ganz einfach leistungsstarke Geostandort-Suchfunktionen entsprechend Ihren Anforderungen entwickeln. Ich wünsche dir viel Erfolg!

Das obige ist der detaillierte Inhalt vonEntwickeln Sie Geolocation-Suchfunktionen mit PHP und Manticore Search. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn