Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leitfaden zur Verwendung von Sphinx mit PHP und MySQL

Ich bin auf diesen Beitrag gestoßen, habe aber keine Antwort gefunden, die ich sehen wollte. Hier ist also meine Kurzanleitung:

1. Installieren Sie Sphinx

Auf Mac mit Homebrew:

brew install sphinx

Unter Amazon Linux (CentOS) mit yum:

yum install sphinx

2. Sphinx-Konfiguration erstellen

Sphinx wird mit einer Konfigurationsvorlage geliefert. Suchen Sie im Konfigurationsverzeichnis nach sphinx.conf.dist:

Auf einem mit Homebrew installierten Mac:

/usr/local/Cellar/sphinx/<sphinx version>/etc

Auf Amazon Linux installiert mit yum:

/etc/sphinx

Es ist ziemlich einfach, enthält aber möglicherweise zu viele Einstellungen für einen Neuling. In diesem Fall können Sie diese einfache Konfiguration verwenden:

source TestSource {
    type = mysql
    sql_host = <host>
    sql_user = <user>
    sql_pass = <password>
    sql_db = <db>

    sql_query_range = select min(id), max(id) from TestTable
    sql_range_step = 2048

    sql_query = select id, some_info from TestTable\
        where id >= $start and id <= $end
}

index TestIndex {
    source = TestSource
    path = /var/lib/sphinx/test-index
    min_word_len = 3
    min_infix_len = 3
}

searchd {
    log = /var/log/sphinx/searchd.log
    query_log = /var/log/sphinx/query.log
    pid_file = /var/run/searchd.pid

    max_matches = 200

    listen = localhost:9312
}

Ich habe dieser Konfiguration die Einstellung max_matches hinzugefügt, weil meine erste Frage, nachdem ich alles zum Laufen gebracht hatte, lautete:"Warum bekomme ich immer nur 20 Suchergebnisse?". Mit max_matches können Sie das Limit für die Anzahl der Suchergebnisse festlegen.

3. Index mit Indexer erstellen

indexer --all

4. Sphinx-Daemon ausführen

sudo searchd -c /path/to/config/sphinx.conf

5. Installieren Sie die PHP Sphinx-Erweiterung

Auf Mac mit Homebrew:

brew install homebrew/php/php56-sphinx

Unter Amazon Linux mit yum:

yum install libsphinxclient
pecl install sphinx

6. Fragen Sie Ihren Index von PHP ab

$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

Im Falle von Fehlern können Sie mit der folgenden Methode weitere Informationen erhalten:

$index->getLastError();

7. Index aktuell halten

Um einen Index aktuell zu halten, können Sie zwei Indizes verwenden:

  1. Hauptindex, der nicht oft aktualisiert wird (einmal pro Woche, Monat usw.)
  2. Und Delta-Index, der häufig aktualisiert wird (stündlich, alle 5 Minuten usw.)

Jedes Mal, wenn der Delta-Index neu indiziert wird, wird er mit dem Hauptindex zusammengeführt

Folgen Sie diesem Link http://www.sphinxconsultant.com/sphinx-search-delta -Indizierung/ um mehr über diesen Ansatz zu erfahren.

Links, die ich nützlich fand: