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 :
Sur Mac avec Homebrew :
brew install sphinx
Sur Amazon Linux (CentOS) avec yum :
yum install 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.
indexer --all
sudo searchd -c /path/to/config/sphinx.conf
Sur Mac avec Homebrew :
brew install homebrew/php/php56-sphinx
Sur Amazon Linux avec yum :
yum install libsphinxclient
pecl install sphinx
$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();
Pour maintenir un index à jour, vous pouvez utiliser deux index :
- Index principal, qui n'est pas mis à jour souvent (une fois par semaine, par mois, etc.)
- 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 :
- http://sphinxsearch.com/docs/current.html
- http://sphinxsearch.com/info/faq/
- http://atlchris.com/1996/working-with-sphinx-search-engine-on-a-lamp-linux-apache-mysql-and-php-stack-server/
- http://www.sphinxconsultant.com/sphinx-search-delta -indexation/
- https://github.com/schmittjoh/ php-stubs/tree/master/res/php/sphinx