Modifications entre les versions 14 et 15
Version 14 à la date du 2011-04-21 21:03:55
Taille: 4758
Commentaire:
Version 15 à la date du 2011-04-21 21:18:35
Taille: 5232
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 83: Ligne 83:
''(à venir)''  * 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 la librairie `stemmer` : {{{
apt-get source snowball
cd snowball-*
dch -i # créer une nouvelle version en ajoutant ~lenny1 ou ~auf1
dpkg-checkbuilddeps # installer ce qui manque le cas échéant
debuild -tc -us -uc
debrelease --dput lenny-test
}}}

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 le paquet Debian

  • 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 la librairie stemmer :

    apt-get source snowball
    cd snowball-*
    dch -i # créer une nouvelle version en ajoutant ~lenny1 ou ~auf1
    dpkg-checkbuilddeps # installer ce qui manque le cas échéant
    debuild -tc -us -uc
    debrelease --dput lenny-test

compiler Sphinx « à 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.

Projet/SavoirsEnPartage/ConfigurationSphinx (dernière édition le 2011-04-21 23:02:36 par JeanChristopheAndré)