web-dev-qa-db-fra.com

Guide d'utilisation de Sphinx avec PHP et MySQL

Je cherche un guide complet sur l'utilisation de Sphinx avec PHP et MySQL. J'aimerais en avoir un qui soit un peu plus simple et facile à vivre que celui fourni sur le site.

Je cherche quelques concepts sur la façon dont tout cela fonctionne exactement.

J'ai un serveur avec PHP, HTML, d'autres données et une base de données MySQL. Comment dois-je procéder pour configurer Sphinx afin d'alimenter la recherche et les résultats renvoyés?

J'aimerais pouvoir transmettre mes termes de recherche à mon script PHP et le faire traiter avec Sphinx et renvoyer les données.

P.S. Je suis également ouvert à toute suggestion concernant toute autre alternative à Sphinx.

26
Julio

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 a fonctionné était "Pourquoi n'ai-je 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 PHP extension 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'erreur, vous pouvez obtenir plus d'informations avec la méthode suivante:

$index->getLastError();

7. Gardez à jour l'index

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

  1. Index principal, qui n'est pas mis à jour souvent (une fois par semaine, mois, etc.)
  2. Et l'index delta, qui se met à jour souvent (toutes les heures, 5 minutes, 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-indexing/ pour en savoir plus sur cette approche.

Liens que j'ai trouvés utiles:

11
Ihor Burlachenko

Je ne suis pas trop sûr d'un bon guide mais voici mes étapes.

a) Téléchargez et installez c'est assez simple

b) Faites votre premier index - vous avez besoin d'une source un emplacement la configuration donnée est très bonne rappelez-vous que vous pouvez utiliser une source principale pour configurer toutes les zones principales et que d'autres sources en découlent. Chaque source doit commencer par la clé primaire et je trouve qu'il est préférable de faire id id key_id

c) Testez votre index en utilisant la recherche

d) Démarrez votre démon de recherche pour sphinx - searchd c'est à quoi php se connectera et comment il obtiendra vos résultats.

e) Faites passer une fonction pour rechercher tous les index dans l'index que vous souhaitez rechercher et elle renverra les identifiants dans un tableau qui correspond à votre recherche

f) Faites un delta et des mises à jour.

Travail fait - le forum sphinx est très sympa et devrait vous fournir si vous avez besoin d'aide. Richard

3
Richard Housham

Jetez un œil à Extensions de moteur de recherche sur php.net: http://php.net/manual/en/refs.search. php .

0
Dong3000

http://play.manticoresearch.com/ est un ensemble de cours interactifs qui vous guideront à travers les différentes tâches que les gens rencontrent lors de l'utilisation de Sphinx/Manticore et comment ils peuvent être résolus.

0
Manticore Search