Heim Backend-Entwicklung PHP-Tutorial PHP-Entwicklung: So verwenden Sie Elasticsearch zur Implementierung der Volltextsuche

PHP-Entwicklung: So verwenden Sie Elasticsearch zur Implementierung der Volltextsuche

Jun 14, 2023 pm 05:07 PM
php elasticsearch 全文检索

In modernen Webanwendungen wachsen die Datenmengen, aber auch die Erwartungen der Benutzer und der Zugriff auf Daten. Daher wird Suchtechnologie immer wichtiger, um die Erwartungen der Benutzer zu erfüllen und ein besseres Benutzererlebnis zu bieten. Die Volltextsuche ist eine leistungsstarke Technologie, mit der große Datenmengen schnell indiziert, durchsucht und sortiert werden können. In dieser Hinsicht ist Elasticsearch eine führende Open-Source-Suchmaschine, die viele erweiterte Funktionen sowie hohe Verfügbarkeit, einfache Skalierbarkeit und andere Vorteile bietet.

In diesem Artikel stellen wir vor, wie Sie Elasticsearch verwenden, um die Volltextsuche über PHP zu implementieren. Wir beginnen mit der Einrichtung der Umgebung, einschließlich der Installation von Elasticsearch und PHP, und bieten dann eine ausführliche Einführung in die drei Hauptaspekte Indizierung, Suche und Analyse.

1. Umgebungseinrichtung

Installieren Sie zunächst Elasticsearch lokal oder auf dem Server. Elasticsearch kann von der offiziellen Website oder über den Paketmanager heruntergeladen und installiert werden.

Zweitens installieren Sie den PHP-Client von Elasticsearch über Composer, nämlich elasticsearch-php. Er bietet viele praktische Methoden und Klassen zum Aufrufen der Elasticsearch-API.

Composer erfordert Elasticsearch/Elasticsearch

Nach Abschluss der Installation konfigurieren Sie Folgendes in der PHP-Datei:

require 'vendor/autoload.php';

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

Auf diese Weise entsteht ein Client, der mit dem Elasticsearch-Server kommuniziert.

2. Index

In Elasticsearch ist ein Index eine Datensammlung, die zum Speichern und schnellen Auffinden von Daten verwendet wird. Wir können die API von elasticsearch-php verwenden, um Daten in den Index einzufügen.

  1. Erstellen Sie einen Index

Zuerst müssen wir einen neuen Index erstellen. Wir verwenden den folgenden Code, um einen Typ namens „my_type“ im Index namens „my_index“ zu erstellen.

$params = [

'index' => 'my_index',
'body'  => [
    'mappings' => [
        'my_type' => [
            'properties' => [
                'title' => ['type' => 'text'],
                'body'  => ['type' => 'text'],
            ]
        ]
    ]
]
Nach dem Login kopieren

];

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

Feldtypen „title“ und „body“ im Array „properties“. ist „text“, was bedeutet, dass sie im Volltext indiziert werden. In der Praxis werden wir Indizes und Feldtypen entsprechend den spezifischen Anforderungen festlegen.

Auf diese Weise haben wir erfolgreich einen Index mit dem Namen „my_index“ erstellt.

  1. Dokumentdaten zum Index hinzufügen

Verwenden Sie den folgenden Code, um das Dokument in den Index einzufügen:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'title' => 'PHP Elasticsearch 全文检索',
    'body'  => 'Elasticsearch 是一个领先的全文搜索引擎,其功能包括分布式、高可用、实时搜索和分析能力等。',
]
Nach dem Login kopieren

];

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

Hier fügen wir ein Dokument mit Titel und Text in den Index ein.

  1. Dokument aktualisieren

Wenn Sie ein Dokument aktualisieren müssen, das sich bereits im Index befindet, verwenden Sie den folgenden Code:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'id'    => '1',
'body'  => [
    'doc' => [
        'title' => '修改后的标题',
        'body'  => '修改后的正文内容',
    ]
]
Nach dem Login kopieren

];

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

Es ist zu beachten, dass bei der Aktualisierung die ID des Dokuments angegeben werden muss.

  1. Dokument löschen

Wenn Sie ein vorhandenes Dokument löschen müssen, verwenden Sie den folgenden Code:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'id'    => '1'
Nach dem Login kopieren

];

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

Damit haben wir das Erstellen, Einfügen, Aktualisieren und Löschen von Indizes und Dokumenten abgeschlossen.

3. Suche

Sehen wir uns an, wie man die Elasticsearch-PHP-API zum Suchen verwendet.

  1. Einfache Abfrage

Zuerst führen wir eine einfache Abfrage aus:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ]
]
Nach dem Login kopieren

];

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

in der oben genannten Code führen wir eine Match-Abfrage für alle Dokumente im Index durch, die das Schlüsselwort „PHP“ enthalten. Die Suchergebnisse werden in der Variablen $response gespeichert.

  1. Abfrage mit mehreren Bedingungen

Wenn Sie mehrere Bedingungen abfragen müssen, können Sie eine Bool-Abfrage verwenden, um mehrere Bedingungen zu kombinieren:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'bool' => [
            'must' => [
                [ 'match' => [ 'title' => 'PHP' ] ],
                [ 'match' => [ 'body'  => '搜索引擎' ] ]
            ]
        ]
    ]
]
Nach dem Login kopieren

];

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

Hier geben wir über den Must-Parameter zwei Abfragebedingungen an, die gleichzeitig erfüllt sein müssen.

  1. Paging-Abfrage

Wenn die Datenmenge groß ist, können wir die Suchergebnisse paginieren:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'from' => 0, 'size' => 10,
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ]
]
Nach dem Login kopieren

];

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

Geben Sie den Offset und die Größe des Ergebnissatzes über die Parameter „from“ und „size“ an.

  1. Nach Bewertung sortieren

Für genauere Suchergebnisse berechnet Elasticsearch für jedes Dokument eine Relevanzbewertung. Mit dem folgenden Code können Sie nach Punktzahl sortieren:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ],
    'sort'  => [
        '_score' => [ 'order' => 'desc' ]
    ]
]
Nach dem Login kopieren

];

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

Auf diese Weise werden die Abfrageergebnisse nach sortiert Relevanzbewertung von hoch nach niedrig sortieren.

4. Analyse

Elasticsearch unterstützt eine Vielzahl leistungsstarker Analyse- und Aggregationsfunktionen, mit denen wir tiefere Informationen über den Datensatz erhalten können.

  1. Aggregation

Der folgende Code kann die zehn Wörter mit der höchsten Häufigkeit des Vorkommens im Feld „Titel“ abrufen:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'size'  => 0,
'body'  => [
    'aggs' => [
        'top_titles' => [
            'terms' => [
                'field' => 'title.keyword',
                'size'  => 10
            ]
        ]
    ]
]
Nach dem Login kopieren

];

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

Geben Sie über den Größenparameter an, dass zurückgegebene Dokumente übersprungen und nur aggregierte Ergebnisse zurückgegeben werden sollen.

  1. Analysatoren

Elasticsearch bietet außerdem viele leistungsstarke Analysatoren zum Analysieren und Verarbeiten von Text. Der folgende Code zeigt, wie der chinesische Analysator zum Verarbeiten von Text verwendet wird:

$params = [

'index' => 'my_index',
'body'  => [
    'settings' => [
        'analysis' => [
            'analyzer' => [
                'my_analyzer'   => [
                    'type'      => 'custom',
                    'tokenizer' => 'ik_max_word'
                ]
            ]
        ]
    ]
]
Nach dem Login kopieren

];

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

这里,我们为名为“my_analyzer”的分析器指定了“ik_max_word”分词器。

下面的代码可以使用这个分析器来分析文本:

$params = [

'index' => 'my_index',
'body'  => [
    'query' => [
        'query_string' => [
            'query'         => '搜索',
            'analyzer'      => 'my_analyzer',
            'default_field' => 'title'
        ]
    ]
]
Nach dem Login kopieren

];

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

这样,我们就可以使用中文分析器来分析中文文本了。

总结

在本文中,我向您介绍了如何使用elasticsearch-php的API来创建、添加、更新和删除索引和文档,以及如何使用搜索API来执行简单和复杂的查询。此外,我还介绍了使用聚合和分析器来处理数据的相关技术。

随着数据集规模的增加,Elasticsearch的重要性逐渐增加。只要您熟悉它的API,您就可以通过PHP轻松地利用其强大的搜索和分析能力来优化您的Web应用程序。

Das obige ist der detaillierte Inhalt vonPHP-Entwicklung: So verwenden Sie Elasticsearch zur Implementierung der Volltextsuche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles