Sphinx ist eine hochleistungsfähige SQL-basierte Volltext-Suchmaschine. Ihre Leistung gehört zu den besten im Bereich der Volltext-Suchmaschinen. Mit Sphinx können wir professionellere Suchfunktionen als die Datenbank selbst implementieren, und es stehen viele gezielte Leistungsoptimierungen zur Verfügung.

Funktionen von Sphinx

  • Schnelle Indexerstellung: Ein Index mit fast 1 Million Datensätzen kann in etwa 3 Minuten erstellt werden. Außerdem wird die inkrementelle Indizierung verwendet, wodurch der Neuaufbau des Index sehr schnell erfolgt.
  • Blitzschnelle Abrufgeschwindigkeit: Selbst bei einer großen Datenmenge wie 10 Millionen Datensätzen liegt die Abfragegeschwindigkeit noch im Millisekundenbereich. Bei 2-4 GB Text beträgt die durchschnittliche Abfragezeit weniger als 0.1 Sekunden.
  • Such-APIs wurden für viele Skriptsprachen entwickelt, wie zum Beispiel PHP, Python,Perl, Ruby usw. Daher können Sie die zugehörigen Schnittstellen von Sphinx in den meisten Programmieranwendungen bequem aufrufen.
  • Für MySQL wurde ein Speicher-Engine-Plugin entwickelt. Wenn Sie Sphinx mit MySQL verwenden, könnte es daher nicht bequemer sein.
  • Unterstützt verteilte Suche, was eine horizontale Skalierung der Systemleistung ermöglicht.

Architekturdiagramm der PHP+MySQL+Sphinx-Suchmaschine

Installation von Sphinx in MySQL

Es gibt zwei Möglichkeiten, Sphinx auf MySQL zu installieren:

  • Die erste Möglichkeit besteht darin, API-Aufrufe zu verwenden. Wir können PHP, Python,Perl, Ruby und anderen Programmiersprachen API-Funktionen zum Ausführen von Abfragen. Diese Methode erfordert kein Neukompilieren von MySQL, bringt weniger Änderungen zwischen Modulen mit sich und ist relativ flexibel.
  • Die zweite Methode erfordert das Neukompilieren von MySQL und das Kompilieren von Sphinx als Plugin in MySQL. Diese Methode erfordert weniger Änderungen am Programm — Sie müssen nur SQL-Anweisungen ändern. Die Voraussetzung ist jedoch, dass Ihre MySQL-Version 5.1 oder höher sein muss.

Das Folgende ist die erste Installationsmethode:

#下载最新稳定版
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xzvf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64
make
make install

Installieren des Sphinx-Plugins Coreseek für chinesische Wortsegmentierung

Hinweis: Das Installations-Tutorial für coreseek stammt vonhier, der detaillierte Ablauf ist wie folgt:

Installieren und Aktualisieren von autoconf

Da coreseek autoconf Version 2.64 oder höher erfordert, müssen Sie autoconf aktualisieren; andernfalls treten Fehler auf. Vonhttp://download.chinaunix.net/download.php?id=29328&ResourceID=648Laden Sie autoconf-2.64.tar.bz2 herunter. Die Installationsmethode ist wie folgt:

tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install

Herunterladen von coreseek

Die neue Version von coreseek packt das Wörterbuch und den Sphinx-Quellcode in ein Paket, sodass Sie nur das coreseek-Paket herunterladen müssen.

wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz

Installieren von mmseg (das von coreseek verwendete Wörterbuch)

tar xzvf coreseek-3.2.14.tar.gz
cd mmseg-3.2.14
./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..

Installieren von coreseek (Sphinx)

cd csft-3.2.14
sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ..

Testen der mmseg-Wortsegmentierung und der coreseek-Suche

Hinweis: Sie müssen den Zeichensatz im Voraus auf zh_CN.UTF-8 einstellen, um sicherzustellen, dass Chinesisch korrekt angezeigt wird. Der Zeichensatz meines Systems ist en_US.UTF-8, was ebenfalls funktioniert.

cd testpack
cat var/test/test.xml  #此时应该正确显示中文
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
此时正确的应该返回
words:
1. '网络': 1 documents, 1 hits
2. '搜索': 2 documents, 5 hits

Generieren des mmseg-Wörterbuchs und der Konfigurationsdateien

Die neue Version hat sie bereits automatisch generiert.

Zusammenfassung

Als leistungsstarke SQL-Volltextsuchmaschine verdient Sphinx weiterhin die Aufmerksamkeit von Entwicklern, insbesondere wegen der mehrsprachigen API-Unterstützung, die die Nutzung für Entwickler erleichtert.

Quelle:http://www.codeceo.com/article/sphinx-sql-search-engine.html
Autor: Manong.com – Xiaofeng