Technologie zur Anzeige und Anpassung von Suchergebnissen basierend auf Elasticsearch in PHP

WBOY
Freigeben: 2023-10-03 09:34:02
Original
1190 Leute haben es durchsucht

PHP 中基于 Elasticsearch 的搜索结果展示与定制技术

Technologie zur Anzeige und Anpassung von Suchergebnissen basierend auf Elasticsearch in PHP

Einführung:
Im modernen Internetzeitalter sind Suchfunktionen ein integraler Bestandteil von Websites und Anwendungen. Für Entwickler war es schon immer eine Herausforderung, die von den Benutzern gewünschten Ergebnisse schnell und genau über Suchmaschinen anzuzeigen. Elasticsearch ist eine verteilte Open-Source-Volltextsuchmaschine, die aufgrund ihrer hohen Leistung und leistungsstarken Such- und Analysefunktionen bei Entwicklern sehr beliebt ist. In diesem Artikel wird die auf Elasticsearch basierende Technologie zur Anzeige und Anpassung von Suchergebnissen in PHP vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Installation und Konfiguration von Elasticsearch

Zuerst müssen wir Elasticsearch installieren und starten. Sie können die neueste stabile Version von der offiziellen Website von Elasticsearch (https://www.elastic.co/) herunterladen und gemäß der offiziellen Dokumentation installieren und konfigurieren.

2. PHP-Elasticsearch-Client-Bibliothek

In PHP können wir die offiziell bereitgestellte Elasticsearch-Client-Bibliothek verwenden, um mit Elasticsearch zu interagieren. Sie können Composer verwenden, um Folgendes zu installieren:

composer require elasticsearch/elasticsearch
Nach dem Login kopieren

Nachdem die Installation abgeschlossen ist, können Sie die Elasticsearch-Clientbibliothek in das Projekt einführen:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;
Nach dem Login kopieren

3. Index und Dokumente erstellen

Bevor wir mit der Suche beginnen, müssen wir einen Index erstellen und Fügen Sie einige Dokumente zur Elasticsearch-Mitte hinzu. Das Folgende ist ein Beispiel für einen PHP-Code:

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

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text'
                ],
                'content' => [
                    'type' => 'text'
                ]
            ]
        ]
    ]
];

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

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '1'
            ]
        ],
        [
            'title' => 'PHP Elasticsearch 搜索实战',
            'content' => '在 PHP 中使用 Elasticsearch 进行高效的搜索技术实战。'
        ],
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '2'
            ]
        ],
        [
            'title' => 'Elasticsearch 基础教程',
            'content' => '学习使用 Elasticsearch 基础教程,从入门到精通。'
        ],
    ]
];

$response = $client->bulk($params);
Nach dem Login kopieren

Suchen und Anzeigen

Als nächstes zeigen wir, wie man Elasticsearch in PHP verwendet, um die Ergebnisse zu suchen und dem Benutzer anzuzeigen. Hier ist ein Beispiel für einen PHP-Code:

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

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . '<br>';
    echo $hit['_source']['content'] . '<br><br>';
}
Nach dem Login kopieren

Der obige Code sucht nach in my_index indizierten Dokumenten, die Elasticsearch im Titel enthalten, und druckt die Ergebnisse aus. my_index 中标题中包含 Elasticsearch 的文档,并将结果打印出来。

五、搜索结果定制化

除了简单的搜索和展示,我们还可以对搜索结果进行定制化处理。以下是一个定制化处理搜索结果的示例代码:

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

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ],
        'highlight' => [
            'pre_tags' => '<strong>',
            'post_tags' => '</strong>',
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass()
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    $title = isset($hit['highlight']['title']) ? implode(' ', $hit['highlight']['title']) : $hit['_source']['title'];
    $content = isset($hit['highlight']['content']) ? implode(' ', $hit['highlight']['content']) : $hit['_source']['content'];

    echo $title . '<br>';
    echo $content . '<br><br>';
}
Nach dem Login kopieren

以上代码将引入高亮的功能,将搜索到的结果中匹配的关键词用 <strong>

5. Anpassung der Suchergebnisse


Neben der einfachen Suche und Anzeige können wir auch Suchergebnisse anpassen. Das Folgende ist ein Beispielcode für die individuelle Verarbeitung von Suchergebnissen:

rrreee🎜Der obige Code führt die Hervorhebungsfunktion ein und markiert die passenden Schlüsselwörter in den Suchergebnissen mit dem Tag <strong>. 🎜🎜Fazit: 🎜Durch die Verwendung von Elasticsearch und der PHP-Client-Bibliothek können wir schnell Suchfunktionen in PHP implementieren und Suchergebnisse anpassen. Ich hoffe, dass der Inhalt dieses Artikels Ihnen dabei hilft, Elasticsearch in PHP zum Anzeigen und Anpassen von Suchergebnissen zu verwenden. 🎜

Das obige ist der detaillierte Inhalt vonTechnologie zur Anzeige und Anpassung von Suchergebnissen basierend auf Elasticsearch in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage