Noch schnellere Suche mit Sphinx

Mit der Unterstützung von Sphinx für die MySQL-Volltextsuche kann die Geschwindigkeit von ke_search-Suchoperationen nochmals gesteigert werden. Insbesondere bei einem sehr großen Such-Index ist das sinnvoll.

Es hängt vom Server ab, auf dem ke_search betrieben wird. Es mag auf einigen Maschinen schon ab 1.000 Einträgen hilfreich sein, auf Sphinx zu setzen, bei anderer Hardware ist die Performance möglicherweise bei 10.000 Einträgen noch sehr gut mit dem Standard MySQL-Index.

Bitte gehen Sie wie folgt vor, um die Sphinx-Unterstützung für ke_search zu aktivieren.

Sphinx installieren

Bitte beachten Sie die Sphinx-Dokumentation:

sphinxsearch.com/docs/

Sie können Sphinx von folgender Adresse herunterladen:

sphinxsearch.com/downloads/release/

Auf einer Linux Shell können Sie Sphinx mit den folgenden Befehlen installieren (bitte geben Sie das gewünschte Installationsverzeichnis mit dem Befehl --prefix an, ansonsten wird Sphinx in das Verzeichnis /usr/local/ installiert, dafür würden Sie root-Rechte benötigen):

wget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
tar xzf sphinx-2.2.11-release.tar.gz
cd sphinx-2.2.11-release/
./configure --prefix=/var/www/my_directory/sphinx

 

Falls der Fehler „ERROR: cannot find MySQL include files.“ erscheint, probieren Sie folgendes:

sudo apt-get install libmysql++-dev

 

Bei weiteren Problemen finden Sie möglicherweise hier Hilfe.

Starten Sie danach "make":

make
make install

 

Falls Sie hier den Fehler „g++ not found“, erhalten, probieren Sie folgenden Befehl und starten make install erneut:

sudo apt-get install g++

Sphinx Setup

Für Sphinx muss eine Setup-Datei erstellt werden.

Diese Datei muss im Sphinx-Installations-Verzeichnis liegen, im Unterverzeichnis "etc/", also z. B.  /var/www/my_directory/sphinx/etc.

Die Datei muss „sphinx.conf“ heißen. Die Datei sphinx.conf.dist wird mit Sphinx ausgeliefert und kann als Referenz dienen.

Editieren Sie die Datei, z. B.:

vi etc/sphinx.conf

und fügen Sie die u. a. Konfiguration in die Datei ein.

Bitte achten Sie darauf, die Datenbank-Zugangsdaten und die Pfade korrekt anzupassen.

sphinx.conf
source tx_kesearch_index {
        type = mysql
        sql_host = [MySQL-Server] In most cases „localhost“
        sql_user = [Username for MySQL]
        sql_pass = [Password for MySQL]
        sql_db = [Databasename for MySQL]
        sql_query_pre = SET NAMES utf8
        sql_query = SELECT uid, title, tags, content, sortdate, CONCAT('_pid_', pid) as pid, CONCAT('_group_', REPLACE(IF(fe_group="", "NULL", fe_group), ',', ',_group_')) as fe_group, CONCAT('_language_', language) AS language FROM tx_kesearch_index        
        sql_field_string = title
        sql_field_string = language
        sql_field_string = fe_group
        sql_attr_timestamp = sortdate
}

index tx_kesearch_index {
        source = tx_kesearch_index
        path = /var/www/my_directory/sphinx/var/data/tx_kesearch_index
        charset_table = 0..9,A..Z->a..z,a..z,_,-,U+C4->U+E4,U+E4,U+D6->U+F6,U+F6,U+DC->U+FC,U+FC,U+DF,U+C0->U+E0,U+E0,U+C9->U+E9,U+E9
        min_word_len = 4
        min_prefix_len = 4
        min_infix_len = 0
}

indexer {
        mem_limit = 256M
}

searchd {
        listen = 9312
        log = /var/www/my_directory/sphinx/var/log/searchd.log
        pid_file = /var/www/my_directory/sphinx/var/log/searchd.pid
}

Indexer-Prozess starten

Nach dem Einrichten von Sphinx können Sie testhalber den Indexer-Prozess manuell starten.

Dies geschieht mit

/var/www/my_directory/sphinx/bin/indexer –all

 

Falls Rechteprobleme auftreten, können Sie diese u. U. mit folgenden Befehlen lösen:

chown [user]:[group] /var/www/my_directory/sphinx/etc/sphinx.conf
chown -R [user]:[group] /var/www/my_directory/sphinx/var/data/

Sphinx Server daemon starten

Starten Sie den Server mit

./searchd

im "/bin"-directory.

Hinweis: Der Server muss immer laufen! Stellen Sie sicher, dass der Sphinx-Server nach einem Server-Neustart gestartet wird!

Extension in TYPO3 konfigurieren

Öffnen Sie die Erweiterung ke_search_premium im Extension-Manager. Aktivieren Sie die Sphinx-Unterstützung im Reiter "Konfiguration", Abschnitt "BASIC" (enableSphinxSearch).

Wechseln Sie danach in den Abschnitt "SPHINX" und konfigurieren Sie dort die korrekten Pfade zu den Binärdateien "indexer" und "searchd".

ke_search-Indexer starten

Nach der Konfiguration im Extension-Manager können Sie den ke_search-Indexer starten (Module "Facettierte Suche" --> "Indexer starten").

Ab jetzt wird die Suche mit Hilfe von Sphinx durchgeführt.

Konfiguration

Parameter Type Description Default
sphinxIndexerPath String Pfad zum Indexer "indexer". /usr/local/bin/indexer
sphinxSearchdPath String Pfad zum Server "searchd". /usr/local/bin/searchd
sphinxIndexerName String Der Name des Indexers, wie er in sphinx.conf hinterlegt ist. tx_kesearch_index
prePostTagChar String Für die MATCH AGAINST-Abfrage wird Tags in ke_search ein Buchstabe hinzugefügt, dies ist das Zeichen #. In Sphinx kann dieses Zeichen nicht verwendet werden, daher sollte hier der Unterstrich _ verwendet werden. _

Sphinx Fehler: sort-by attribute sortdate not found

Wenn Sie den Fehler "sort-by attribute 'sortdate' not found" erhalten, ergänzen Sie die Sphinx-Konfiguration:

sphinx.conf
source tx_kesearch_index {
        type = mysql
        sql_host = ...
        sql_user = ...
        sql_pass = ...
        sql_db = ...
        sql_query_pre = SET NAMES utf8
        sql_query = SELECT uid, title, tags, content, sortdate, CONCAT('_group_', REPLACE(IF(fe_group="", "NULL", fe_group), ',', ',_group_')) as fe_group, CONCAT('_language_', language) AS language FROM tx_kesearch_index
        sql_field_string = title
        sql_field_string = language
        sql_field_string = fe_group
        sql_attr_timestamp = sortdate
}
Sarah (Archiv)
ich habe ke_search, ke_search_premium und sphinx nach anleitung installiert und konfiguriert. wenn ich allerdings die indexierung anstoße, bekomme ich daraufhin nur eine leere seite. gehe ich dann noch mal im menü auf facetierte suche, wird mir gesagt die indizierung läuft. wenn ich aber einen begriff suche, bekomme ich keine ergebnisse und habe folgenden fehler: index tx_kesearch_index: sort-by attribute '' not found
Christian (Archiv)
Hallo Sarah, als Premium-Kunde kannst Du Dich direkt an uns wenden, leider habe ich Deine E-Mail-Adresse nicht!

Kommentar hinzufügen

* - Pflichtfeld

Ihr Ansprechpartner für ke_search

Das Absenden ist erst dann möglich, wenn alle Pflichtfelder ausgefüllt sind und der Haken „Ich akzeptiere“ gesetzt ist. * Pflichtfelder

Hinweis zum Kontaktformular: Wir benötigen Ihren Namen um Sie ansprechen zu können und Ihre E-Mail-Adresse um Ihnen antworten zu können.
Datenschutzhinweise: Ihre Anfrage wird verschlüsselt übertragen. Sie erklären Sich damit einverstanden, dass wir Die Angaben zur Beantwortung Ihrer Anfrage verwenden dürfen. Weitere Informationen zum Datenschutz und Widerrufhinweise finden Sie auf unserer "Datenschutzerklärung".

zurück zum Kontakt
 

TYPO3 Agentur aus Leidenschaft. Wir erbringen alle Dienstleistungen rund um TYPO3. Von einfachen Webseiten bis hin zu TYPO3 Portal-Webseiten oder hoch komplexen TYPO3-Extensions. Wir engagieren uns im TYPO3 Security Board und in der Community. Unsere TYPO3 Agentur "lebt" TYPO3.