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.
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)
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.
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.
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!