Sommaire
Configuration de Sphinx
Savoirs en partage a besoin de Sphinx compilé avec libstemmer. Or, le Sphinx qui vient avec Debian n'est pas compilé avec libstemmer. Nous allons donc installer un paquet maison.
Installer le paquet :
# wget http://apt.auf.org/pool/auf/s/sphinxsearch/sphinxsearch_0.9.9-6+auf1_i386.deb # dpkg -i sphinxsearch_0.9.9-6+auf1_i386.deb
Il est aussi disponible via apt dans la section lenny-experimental du DépôtApt.
Modifier le fichier de configuration. Sphinx supporte une méthode simple pour créer des fichiers de configuration dynamiquement. Si le fichier de configuration est exécutable et commence avec un she-bang (#!), le fichier est exécuté et sa sortie est utilisée comme configuration. Nous utiliserons cette méthode pour inclure la configuration spécifique à Savoirs en partage (qui est elle-même exécutable) dans la configuration globale de Sphinx.
Voici donc le contenu à mettre dans le fichier /etc/sphinxsearch/sphinx.conf après avoir effacé l'exemple de configuration :
#!/bin/sh # # Configuration de Sphinx. # # Si ce fichier est un script exécutable, Sphinx utilisera la # sortie du script comme configuration. C'est ce que nous faisons ici pour # obtenir une configuration dynamique. # Inclusion de la configuration de Savoirs en partage ROOT_SAVOIRS_EN_PARTAGE=/srv/www/www.savoirsenpartage.auf.org CONF_SAVOIRS_EN_PARTAGE=$ROOT_SAVOIRS_EN_PARTAGE/bin/sphinx.conf.py if [ -f $CONF_SAVOIRS_EN_PARTAGE ]; then /usr/bin/python $CONF_SAVOIRS_EN_PARTAGE fi # Configuration globale cat <<EOF indexer { mem_limit = 256M } searchd { listen = 127.0.0.1:9312 pid_file = /var/run/searchd.pid log = /dev/null } EOF
Assurez-vous de donner la bonne valeur à la variable ROOT_SAVOIRS_EN_PARTAGE, conformément à votre environnement. Par exemple, dans l'environnement de test, c'est plutôt /srv/www/test.savoirsenpartage.auf.org.
Puis, il faut rendre ce fichier exécutable :
# chmod +x /etc/sphinxsearch/sphinx.conf
Lancer l'indexeur pour créer les index initiaux :
# indexer --all
Si tout s'est bien passé, on peut maintenant indiquer au système que nous voulons que le démon de Sphinx soit automatiquement lancé au démarrage en modifiant le fichier /etc/default/sphinxsearch. Il faut remplacer la ligne
START=no
par (vous l'aurez deviné)
START=yes
On peut maintenant démarrer le démon :
# /etc/init.d/sphinxsearch start
Les index de Sphinx doivent être regénérés à l'aide de l'outil indexer qui vient avec le paquet pour prendre en compte les nouvelles données. Le cron job suivant lance la regénération toutes les 15 minutes et écrit la sortie dans un log.
*/15 * * * * root (date; /usr/bin/indexer --all --rotate; echo) >> /var/log/sphinxsearch/indexer.log
Si vous n'aimez pas que l'indexeur soit lancé par root, vous pouvez le faire lancer par un autre utilisateur, mais il faut alors lui donner accès en écriture au répertoire /var/lib/sphinxsearch/data.
Développeur
Construire un paquet Debian pour Sphinx + libstemmer
ajouter les sources Debian dans son /etc/apt/sources.list :
deb-src http://ftp.us.debian.org/debian/ squeeze main
mettre à jour les listes de paquets :
sudo aptitude update
produire les paquets pour sphinxsearch incluant libstemmer :
apt-get source sphinxsearch cd sphinxsearch-* wget -O- http://snowball.tartarus.org/dist/libstemmer_c.tgz | tar -xz sed -i '/\.\/configure /s/$/ --with-libstemmer/' debian/rules dpkg-checkbuilddeps # installer ce qui manque le cas échéant # sur lenny installer libmysqlclient15-dev qui fournit libmysqlclient-dev dch -i # créer une nouvelle version en ajoutant +stemmer0~lenny1 debuild -tc -us -uc debrelease --dput lenny-test
Compiler Sphinx + libstemmer « à la main »
télécharger sphinx :
wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz
télécharger libstemmer (FR) :
wget http://snowball.tartarus.org/dist/libstemmer_c.tgz
extraire ces 2 archives (ex / opt) :
tar zxvf sphinx-0.9.9.tar.gz && tar zxvf libstemmer_c.tgz
copier le contenu de libstemmer_c dans sphinx-xxx/libstemmer_c :
mv libstemmer_c/* sphinx-0.9.9/libstemmer_c/
- aller dans sphinx-xxx
options de compilation
./configure --with-libstemmer
compiler
make
installer
make install
Les binaires ont été installés sur ma machine dans /usr/local/bin (search, searchd, indexer)
créer le fichier sphinx.conf dans le répertoire /usr/local/etc/ (le contenu de ce fichier est fourni dans la rubrique suivante, path à ajuster)
- la config dynamique générée par buildout s'attends à disposer d'un répertoire /var/lib/sphinxsearch/data accessible en écriture
indexer le contenu (créer les fichiers caches dans le répertoire ci-dessus en fonction des requêtes SQL
indexer --all
- Lancer le service de consultation de recherche
searchd
Lancer une recherche textuelle sur le site, si le serveur n'est pas lancé, une erreur : connection to localhost;9312 failed ((111, 'Connection refused')) apparaitra.