Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP und Elasticsearch zum Anzeigen und Navigieren in Suchergebnissen

So verwenden Sie PHP und Elasticsearch zum Anzeigen und Navigieren in Suchergebnissen

WBOY
WBOYOriginal
2023-07-18 11:13:27957Durchsuche

So verwenden Sie PHP und Elasticsearch zum Anzeigen und Navigieren in Suchergebnissen

Mit der rasanten Entwicklung des Internets sind Suchfunktionen zu einer Standardfunktion verschiedener Websites und Anwendungen geworden. Die effiziente Anzeige von Suchergebnissen und die Bereitstellung einer guten Navigationserfahrung sind für Website-Entwickler zu einer wichtigen Herausforderung geworden. In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch Funktionen zur Anzeige und Navigation von Suchergebnissen implementieren.

1. Richten Sie eine Entwicklungsumgebung ein

Zunächst müssen wir eine Entwicklungsumgebung für PHP und Elasticsearch einrichten. Stellen Sie sicher, dass Sie PHP- und Elasticsearch-bezogene Pakete installiert haben.

2. Erstellen Sie einen Index

Bevor wir beginnen, müssen wir einen Index erstellen, um unsere Daten zu speichern. Angenommen, wir möchten eine Produktsuchfunktion erstellen, können wir einen Index namens „Produkte“ erstellen. In Elasticsearch ähneln Indizes Tabellen in einer Datenbank und werden zum Speichern und Organisieren von Daten verwendet.

Erstellen Sie einen Index mit dem Namen „Produkte“ mit dem folgenden Code:

<?php
require 'autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'localhost:9200' // Elasticsearch的主机和端口
];

$client = ClientBuilder::create()
            ->setHosts($hosts)
            ->build();

$params = [
    'index' => 'products' // 索引名称
];

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

echo "Index created successfully.";
?>

3. Daten importieren

Als nächstes müssen wir unsere Daten in den Index importieren, den wir gerade erstellt haben. In diesem Beispiel gehen wir davon aus, dass wir eine Datei mit dem Namen „products.json“ haben, die einige JSON-Daten mit Produktinformationen enthält.

Verwenden Sie den folgenden Code, um Daten in den Index „Produkte“ zu importieren:

<?php
require 'autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'localhost:9200' // Elasticsearch的主机和端口
];

$client = ClientBuilder::create()
            ->setHosts($hosts)
            ->build();

$params = [
    'index' => 'products', // 索引名称
    'body'  => [
        // 导入数据的JSON数组
        [
            'index' => [
                '_index' => 'products',
                '_type'  => 'product',
            ]
        ],
        [
            'title'      => 'iPhone 11',
            'description' => 'An amazing smartphone by Apple.',
            'price'      => 999,
        ],
        [
            'index' => [
                '_index' => 'products',
                '_type'  => 'product',
            ]
        ],
        [
            'title'      => 'Samsung Galaxy S20',
            'description' => 'A powerful smartphone by Samsung.',
            'price'      => 899,
        ],
        // 更多商品数据...
    ]
];

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

echo "Data imported successfully.";
?>

IV. Führen Sie die Suchfunktion aus.

Nachdem wir nun den Index erstellt und die Daten importiert haben, können wir die Suchfunktion implementieren. In PHP können wir die Such-API von Elasticsearch verwenden, um Suchanfragen durchzuführen.

Verwenden Sie den folgenden Code, um die Suchfunktion zu implementieren:

<?php
require 'autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'localhost:9200' // Elasticsearch的主机和端口
];

$client = ClientBuilder::create()
            ->setHosts($hosts)
            ->build();

$params = [
    'index' => 'products', // 索引名称
    'body'  => [
        'query' => [
            'match' => [
                'title' => 'iPhone' // 搜索关键字
            ]
        ]
    ]
];

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

// 处理搜索结果
foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . "<br>";
    echo $hit['_source']['description'] . "<br>";
    echo $hit['_source']['price'] . "<br>";
    echo "<hr>";
}
?>

Der obige Code verwendet die „Match“-Abfrage von Elasticsearch, um die Suche durchzuführen und die Suchergebnisse zur Anzeige zu durchlaufen.

5. Ergebnisseite und Navigation implementieren

Im Allgemeinen kann die Anzahl der Suchergebnisse groß sein, daher müssen wir Ergebnisseite und Navigationsfunktionen implementieren, um ein besseres Benutzererlebnis zu bieten. In PHP können wir die Parameter „from“ und „size“ von Elasticsearch verwenden, um Paging zu implementieren.

Verwenden Sie den folgenden Code, um Paging- und Navigationsfunktionen zu implementieren:

<?php
require 'autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'localhost:9200' // Elasticsearch的主机和端口
];

$client = ClientBuilder::create()
            ->setHosts($hosts)
            ->build();

$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页数
$perPage = 10; // 每页显示的数量

$from = ($page - 1) * $perPage;

$params = [
    'index' => 'products', // 索引名称
    'body'  => [
        'from' => $from, // 从第几个结果开始
        'size' => $perPage // 每页显示的数量
        'query' => [
            'match' => [
                'title' => 'iPhone' // 搜索关键字
            ]
        ]
    ]
];

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

// 处理搜索结果
foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . "<br>";
    echo $hit['_source']['description'] . "<br>";
    echo $hit['_source']['price'] . "<br>";
    echo "<hr>";
}

// 显示分页导航
$totalPages = ceil($response['hits']['total']['value'] / $perPage); // 总页数

for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='search.php?page=$i'>$i</a>";
}
?>

Der obige Code bestimmt die aktuelle Seitennummer basierend auf den Anforderungsparametern des Benutzers und verwendet die Parameter „from“ und „size“, um den Bereich der Ergebnisse zu steuern. Gleichzeitig wird die paginierte Navigation basierend auf der Gesamtzahl der Suchergebnisse und der auf jeder Seite angezeigten Anzahl berechnet und angezeigt.

Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch Funktionen zur Anzeige und Navigation von Suchergebnissen implementieren. Indem wir eine Entwicklungsumgebung einrichten, Indizes erstellen, Daten importieren und Suchfunktionen ausführen, können wir ein effizientes Sucherlebnis erreichen und durch paginierte Navigation ein besseres Benutzererlebnis bieten. Ich glaube, dass Leser es basierend auf dem Beispielcode in diesem Artikel leicht auf ihre eigenen Projekte anwenden können.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP und Elasticsearch zum Anzeigen und Navigieren in Suchergebnissen. 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