Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Sphinx mit CakePHP?

Wie verwende ich Sphinx mit CakePHP?

PHPz
PHPzOriginal
2023-06-05 22:10:321472Durchsuche

CakePHP ist ein hervorragendes Framework für die Entwicklung von Webanwendungen, das leistungsstarke Funktionen und flexibles Design bietet. Sphinx ist eine beliebte Volltextsuchmaschine, die uns dabei hilft, riesige Datenmengen effizient zu verarbeiten.

In diesem Artikel stellen wir vor, wie wir Sphinx in CakePHP verwenden, um unsere Suchanforderungen besser zu erfüllen.

  1. Sphinx installieren

Zuerst müssen wir Sphinx installieren. Sphinx bietet eine Vielzahl von Installationsmethoden, einschließlich der Installation von Quellcode, der Installation von Binärpaketen usw. Hier stellen wir die Verwendung von APT unter Ubuntu Linux zur Installation von Sphinx vor.

Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:

sudo apt-get update
sudo apt-get install sphinxsearch

Nachdem die Installation abgeschlossen ist, können wir mit dem folgenden Befehl überprüfen, ob Sphinx korrekt installiert ist:

sudo /usr/bin/searchd

Wenn alles in Ordnung ist, sollten Sie eine Ausgabe ähnlich der folgenden sehen können:

Sphinx 3.1.1-id64-release (commit 4b8c4635)
Copyright (c) 2001-2020, Andrew Aksyonoff
Copyright (c) 2008-2020, Sphinx Technologies Inc (http://sphinxsearch.com)

  1. Konfigurieren von Sphinx

Als nächstes müssen wir Sphinx entsprechend unseren Anforderungen konfigurieren. Die Sphinx-Konfigurationsdatei befindet sich in /etc/sphinxsearch/sphinx.conf. Wir können die Datei mit dem folgenden Befehl bearbeiten:

sudo nano /etc/sphinxsearch/sphinx.conf

Hier ist ein einfaches Konfigurationsbeispiel:

source src1
{

type = mysql
sql_host = localhost
sql_user = username
sql_pass = password
sql_db = database
sql_query = 
    SELECT id, title, content 
    FROM articles

}

index idx1
{

source = src1
path = /var/lib/sphinxsearch/data/idx1
docinfo = extern
morphology = stem_en
charset_type = utf-8
min_word_len = 3

}

searchd
{

listen = 127.0.0.1:9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 1000
seamless_rotate = 1

}

Hier definieren wir eine Datenquelle mit dem Namen src1, verwenden die MySQL-Datenbank zum Datenabruf, die abzurufende Datentabelle sind Artikel und die abzurufenden Datenfelder sind ID, Titel und Inhalt .

Als nächstes wird ein Index namens idx1 definiert, src1 als Datenquelle verwendet und die Indexdatei im Verzeichnis /var/lib/sphinxsearch/data/idx1 gespeichert.

Abschließend werden einige Parameter des Suchservers definiert, z. B. Überwachungs-IP und -Port, Protokolldateipfad, Abfrage-Timeout usw.

  1. Erstellen des CakePHP-Modells

Als nächstes erstellen Sie unser Modell in CakePHP. Wir können den folgenden Befehl verwenden, um eine Modellklasse mit dem Namen Article zu erstellen:

./bin/cakebake model Article

Nach der Ausführung erstellt CakePHP automatisch eine Modellklasse mit dem Namen Article unter src/Model.

  1. CakePHP-Controller-Code schreiben

Schließlich müssen wir CakePHP-Controller-Code schreiben, um Suchanfragen zu verarbeiten. Hier ist ein einfaches Beispiel:

use CakeCoreException;
use CakeUtilityHash;
use CakeHttpClient;
Hier laden wir zunächst das Articles-Modell Klasse und erhalten Sie das Suchschlüsselwort mit dem Namen „q“ in den HTTP-Abfrageparametern.

Erstellen Sie dann ein SphinxClient-Objekt, legen Sie die Sphinx-Serveradresse und den Sphinx-Port fest und verwenden Sie den SPH_MATCH_ALL-Modus für Suchanfragen.

Als nächstes extrahieren Sie die IDs aus den von Sphinx zurückgegebenen Ergebnissen und suchen Sie nach diesen Artikeldaten im Articles-Modell.

Zeigen Sie abschließend die Abfrageergebnisse in der Ansicht an.

Durch die oben genannten Schritte können wir Sphinx verwenden, um die Volltextsuche in CakePHP zu implementieren. In der tatsächlichen Entwicklung können wir die Suchfunktion je nach Bedarf weiter ausbauen und optimieren, um unterschiedlichen Geschäftsanforderungen gerecht zu werden.

Das obige ist der detaillierte Inhalt vonWie verwende ich Sphinx mit CakePHP?. 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