Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie eine Volltextsuchmaschine mit PHP und Elasticsearch
So erstellen Sie eine Volltextsuchmaschine mit PHP und Elasticsearch
Volltextsuchmaschinen spielen im modernen Internet eine wichtige Rolle und ermöglichen Benutzern das schnelle Auffinden von Informationen, die ihren Anforderungen entsprechen. Eine gute Volltextsuchmaschine muss nicht nur schnell suchen, sondern auch qualitativ hochwertige Suchergebnisse liefern. In diesem Artikel erfahren Sie, wie Sie mit PHP und Elasticsearch eine Volltextsuchmaschine erstellen.
Was ist Elasticsearch?
Elasticsearch ist eine Open-Source-Suchmaschine, die auf der Lucene-Suchmaschinenbibliothek basiert. Es bietet eine verteilte, mandantenfähige Volltextsuchmaschine und ist in der Lage, große Datenmengen automatisch zu verarbeiten. Elasticsearch kann Daten schnell durchsuchen und analysieren und unterstützt die Echtzeitsuche, was bedeutet, dass Elasticsearch bei Aktualisierung der Daten innerhalb von Millisekunden Suchergebnisse aus neuen Daten zurückgeben kann.
Elasticsearch unterstützt eine Vielzahl von Datentypen, darunter Text, numerische Werte, Datumsangaben, geografische Standorte usw. Durch den Einsatz von Elasticsearch können wir schnell eine Volltextsuchmaschine erstellen und diese an unterschiedliche Anforderungen anpassen.
Herstellen einer Verbindung zu Elasticsearch über PHP
Um eine Verbindung zu Elasticsearch über PHP herzustellen, müssen wir die Elasticsearch-PHP-Clientbibliothek installieren. Der einfachste Weg, diese Bibliothek zu installieren, ist die Verwendung von Composer, der mit dem folgenden Befehl installiert werden kann:
composer require elasticsearch/elasticsearch
Nach Abschluss der Installation referenzieren Sie diese Bibliothek im Code:
require 'vendor/autoload.php'; use ElasticsearchClientBuilder;#🎜 🎜#Hier haben wir die ClientBuilder-Klasse der Elasticsearch-PHP-Clientbibliothek verwendet, um eine Verbindung zu Elasticsearch herzustellen. $config = [
'hosts' => ['localhost:9200']];$client = ClientBuilder::create()->setHosts($config['hosts '])->build();Hier verwenden wir die ClientBuilder-Klasse, um einen Elasticsearch-Client zu erstellen und eine Verbindung über den Hostnamen und Port des Clusters herzustellen. Index erstellenIn einer Volltextsuchmaschine müssen Daten im Index und nicht in der Datenbank gespeichert werden. Um einen Index zu erstellen, müssen wir zunächst die Struktur der Daten und die Einstellungen für den Index definieren. Diese Struktur wird Mapping genannt. Angenommen, wir möchten für dieses Beispiel eine Suchmaschine für die Suche nach Artikeln erstellen. Artikel verfügen über Felder wie Titel, Autor, Veröffentlichungsdatum und Text. Wir können die Zuordnung mit dem folgenden Code definieren: $params = [
'index' => 'articles', 'body' => [ 'mappings' => [ 'article' => [ 'properties' => [ 'title' => ['type' => 'text'], 'author' => ['type' => 'text'], 'publish_date' => ['type' => 'date'], 'body' => ['type' => 'text'] ] ] ] ]];$response = $client->indices( ) ->create($params);Hier definieren wir einen Index mit dem Namen „Artikel“ und definieren die Zuordnung von Artikeln, einschließlich Titel, Autor, Veröffentlichungsdatum und Text des Artikels. Dadurch wird ein Index namens „articles“ erstellt, der einen Typ namens „article“ enthält, der die von uns definierten Felder enthält. Nachdem wir den Index erstellt haben, können wir mit dem Hinzufügen von Daten zum Index beginnen. Daten hinzufügenUm Daten hinzuzufügen, schreiben wir die Daten in Elasticsearch, indem wir die Methode
aufrufen: index
'index' => 'articles', 'type' => 'article', 'id' => 1, 'body' => [ 'title' => '如何使用PHP和Elasticsearch构建全文搜索引擎', 'author' => 'John Doe', 'publish_date' => '2020-01-01', 'body' => '全文搜索引擎在现代互联网中扮演着重要的角色……' ]
];
$client->index($params);
Hier geben wir den zu indizierenden „Artikel“-Index an und „ Artikeltyp unter Verwendung einer eindeutigen ID. Bei der Indizierung von Daten schreiben wir die Daten in Elasticsearch, indizieren sie und machen sie durchsuchbar.
Daten abfragen
Um Daten abzufragen, müssen wir eine Abfrageanforderung erstellen und diese an den Elasticsearch-Server senden. Wir können eine Match-Abfrage verwenden, die Schlüsselwörter in Feldern abgleicht. Zum Beispiel:
$query = [
'match' => [ 'title' => 'Elasticsearch' ]
];
$params = [
'index' => 'articles', 'type' => 'article', 'body' => [ 'query' => $query ]
];# 🎜 🎜#
$response = $client->search($params);Hier fragen wir alle Dateien vom Typ „article“ im „articles“-Index ab, die den „title“ enthalten „Felddokument und das Feld „Titel“ enthält das Schlüsselwort „Elasticsearch“. Elasticsearch unterstützt auch viele andere Arten von Abfragen, wie zum Beispiel boolesche Abfragen, Bereichsabfragen, Präfixabfragen und mehr. Das Verständnis aller Abfragetypen und deren Verwendung kann dazu führen, dass Suchmaschinen besser an unterschiedliche Datentypen angepasst werden können. FazitIn diesem Artikel haben wir gelernt, wie man mit PHP und Elasticsearch eine Volltextsuchmaschine erstellt. Wir haben zunächst die PHP-Clientbibliothek von Elasticsearch installiert und damit eine Verbindung zum Elasticsearch-Server hergestellt. Anschließend erstellen wir einen Index namens „articles“ und definieren die Zuordnung der Artikel. Danach haben wir einige Daten hinzugefügt und eine Abfrage ausgeführt. Schließlich haben wir erfahren, dass Elasticsearch viele Abfragetypen unterstützt und gelernt, wie man sie verwendet, damit wir eine leistungsfähigere Volltextsuchmaschine erstellen können, die für verschiedene Datentypen geeignet ist.Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Volltextsuchmaschine mit PHP und Elasticsearch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!