Heim >Backend-Entwicklung >PHP-Tutorial >Kompilieren und installieren Sie Sphinx, Coreseek für die chinesische Wortsegmentierung und die PHP-Sphinx-Erweiterung unter Linux

Kompilieren und installieren Sie Sphinx, Coreseek für die chinesische Wortsegmentierung und die PHP-Sphinx-Erweiterung unter Linux

伊谢尔伦
伊谢尔伦Original
2016-11-25 15:57:222097Durchsuche

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 starten

Einführung in den Befehlsparameter „searchd“:

-c gibt die Konfigurationsdatei an
cd /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 sphinx
Gelö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 install
aus. 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.

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