<> = Configuration de Sphinx = Savoirs en partage a besoin de [[http://sphinxsearch.com|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 #!/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 <> /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.