Mysql
 sql >> Base de données >  >> RDS >> Mysql

Guide d'utilisation de Sphinx avec PHP et MySQL

Je suis tombé sur ce post mais je n'ai pas trouvé de réponse que je voulais voir. Voici donc mon guide de démarrage rapide :

1. Installer Sphinx

Sur Mac avec Homebrew :

brew install sphinx

Sur Amazon Linux (CentOS) avec yum :

yum install sphinx

2. Créer une configuration Sphinx

Sphinx est livré avec un modèle de configuration. Recherchez sphinx.conf.dist dans le répertoire configs :

Sur Mac installé avec Homebrew :

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

Sur Amazon Linux installé avec yum :

/etc/sphinx

C'est assez simple mais peut contenir trop de paramètres pour un débutant. Dans ce cas, vous pouvez utiliser cette configuration simple :

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
}

J'ai ajouté le paramètre max_matches à cette configuration car ma première question après que tout fonctionne était "Pourquoi est-ce que je n'obtiens toujours que 20 résultats de recherche?". Avec max_matches, vous pouvez définir la limite du nombre de résultats de recherche.

3. Créer un index à l'aide de l'indexeur

indexer --all

4. Exécutez le démon Sphinx

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

5. Installer l'extension PHP Sphinx

Sur Mac avec Homebrew :

brew install homebrew/php/php56-sphinx

Sur Amazon Linux avec yum :

yum install libsphinxclient
pecl install sphinx

6. Interrogez votre index depuis PHP

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

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

print_r($result);

En cas d'erreurs, vous pouvez obtenir plus d'informations avec la méthode suivante :

$index->getLastError();

7. Tenir à jour l'index

Pour maintenir un index à jour, vous pouvez utiliser deux index :

  1. Index principal, qui n'est pas mis à jour souvent (une fois par semaine, par mois, etc.)
  2. Et l'index delta, qui se met à jour souvent (toutes les heures, toutes les 5 min, etc.)

Chaque fois que l'index delta est réindexé, il est fusionné avec l'index principal

Suivez ce lien http://www.sphinxconsultant.com/sphinx-search-delta -indexation/ pour en savoir plus sur cette approche.

Liens que j'ai trouvés utiles :