Heim >Backend-Entwicklung >PHP-Tutorial >Kompilieren und installieren Sie Sphinx, Coreseek für die chinesische Wortsegmentierung und die PHP-Sphinx-Erweiterung unter Linux
Linux-Umgebung ist: CentOS5.5, Ubuntu12.04
1. Software-Download
sphinx-2.1.3
coreseek-4.1
2. Sphinx installieren
tar zxvf sphinx-2.1.3.tar.gz //解压sphinx包 cd sphinx-2.1.3 ./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/
--prefix: Geben Sie den Sphinx-Installationspfad an
--with-mysql: Geben Sie den MySQL-Installationspfad an
sudo make && make install
Kompilieren und installieren
Nach erfolgreicher Installation bildet sphinx drei Befehle:
indexer 创建索引命令 searchd 启动进程命令 search 命令行搜索命令
Hinweis: Die oben genannten Befehle befinden sich standardmäßig im Verzeichnis /usr/local/sphinx/bin
3. Konfigurieren Sie Sphinx und verwenden Sie
cd /usr/local/sphinx/etc
, um das etc-Verzeichnis von Sphinx aufzurufen.
sudo cp sphinx.conf.dist sphinx.conf
, um eine Konfigurationsdatei zu kopieren und sie sphinx.conf zu nennen.
Importieren Sie die Datei example.sql in diesem Verzeichnis in die lokale Datenbank namens test.
Ändern Sie die Konfigurationsinformationen und ändern Sie die Datenbankverbindungsinformationen in Ihre lokalen Datenbankinformationen.
Dann verwenden Sie den folgenden Befehl, um Daten zu importieren und einen Index zu generieren:
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/indexer --all
Wenn beim Ausführen des Indexerbefehls ein Fehler gemeldet wird:
ERROR: index 'test1stemmed': sql_connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Möglicherweise Dies liegt am Speicherort von mysql.sock. Auf diesem Computer lautet der geänderte Speicherort /tmp/mysql.sock (im Zusammenhang mit den Einstellungen bei der Installation von MySQL). Kommentieren Sie diese Zeile einfach in sphinx.conf aus (entfernen Sie das #-Zeichen davor). :
#sql_sock = /tmp/mysql.sock
Führen Sie den obigen Indexerbefehl erneut aus, alles ist normal.
Um die Abfrage auszuführen, können Sie den folgenden Befehl verwenden:
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/search test
Während des Suchvorgangs wird möglicherweise ein Fehler gemeldet:
index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).
Ich habe es in Sphinx versucht .conf Das Ändern des Werts von thread_stack im Modul searchd hat das Problem nicht gelöst. Später habe ich die folgende Zeile
#sql_query_info = SELECT * FROM documents WHERE id=$id
in Quelle src1 auskommentiert und dann den Suchbefehl ausgeführt, und es war in Ordnung.
Verwenden Sie den folgenden Befehl, um Sphinx im Hintergrund zu starten:
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/searchd
Verwenden Sie das PHP-Skript, um den Suchbefehl auszuführen:
$ cd sphinx/api $ php test.php test
Das Eingabeergebnis lautet wie folgt:
Query 'test ' retrieved 3 of 3 matches in 0.022 sec. Query stats: 'test' found 10 times in 6 documents Matches: 1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:37 2. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:37 3. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:37
4. Coreseek installieren
tar zxvf coreseek-4.1.tar.gz
Nach der Dekomprimierung werden zwei Verzeichnisse angezeigt: csft-4.1, mmseg-3.2.14
Installieren Sie zunächst mmseg
cd mmseg-3.2.14/ ./configure --prefix=/usr/local/mmseg
Wenn während der Kompilierung ein Fehler auftritt: „config.status: Fehler: Eingabedatei konnte nicht gefunden werden: src/Makefile.in“
Lösung:
sudo apt-get install automake aclocal libtoolize --force 我运行后有一个错误,没管它。 automake --add-missing autoconf autoheader make clean ./configure --prefix=/usr/local/mmseg make sudo make install
csft (coreseek) installieren
cd csft-4.1/ sh buildconf.sh ./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql/ --with-mmseg=/usr/local/mmseg/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ sudo make && make install
Nach Abschluss der Installation ist es dasselbe wie nach der Installation von sphinx. Sie müssen die Datei coreseek/etc/example.sql importieren in die lokale Datenbank kopieren, dann sphinx.conf.dist nach csft.conf kopieren und den Datenbankbenutzernamen und das Passwort ändern, Testfehler und Fehlerlösungen in sphinx sind gleich.
Um Sphinx zu verwenden, müssen Sie folgende Dinge tun:
2. Generieren Sie einen Index;
Starten Sie den Suchdienstprozess, der Standardwert ist 9312
Verwenden Sie PHP, um eine Verbindung zum Sphinx-Dienst herzustellen
Befehl startenEinführung in den Befehlsparameter „searchd“: -c gibt die Konfigurationsdatei ancd /usr/local/coreseek/bin/ ./searchd
--stop stoppt den Dienst
-- pidfile wird verwendet, um explizit eine PID-Datei anzugeben
-p gibt den Port an
5. PHP install sphinx extension
Wenn ein Fehler auftritt: „configure: error : Libsphinxclient-Header können nicht gefunden werden“Gelöst Methode:sudo pecl install sphinxGelöst! Gehen Sie zurück und führen Sie
cd coreseek-4.1/csft-4.1/api/libsphinxclient/ ./configure --prefix=/usr/local/libsphinxclient sudo make && make installaus. Eine Meldung ähnlich der „Gemeinsame Erweiterungen werden installiert: /usr/lib/php5/20090626/sphinx.so“ erscheint und zeigt den Erfolg an. Sie können dieses Verzeichnis betreten und dort finden Sie eine generierte sphinx.so-Datei. Laden Sie die so-Datei in php.ini
./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclient sudo make && make install
extension=/usr/lib/php5/ 20090626/sphinx.so
Apache neu starten Dies erscheint in phpinfo(), um den Erfolg anzuzeigen.