bonjour,

je voulais essayer, pour une fois, de mettre en place un vrai moteur pour fouiller dans les données de ma base. Pour commencer, j'ai voulu utiliser Zend Lucene en me basant sur le tuto Jobeet.

Je voudrais commencer en indexant les enregistrements de deux tables Ressource et Evenement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class RessourceTable extends Doctrine_Table
{
    static public function getLuceneIndex()
    {
        ProjectConfiguration::registerZend();
        if ( file_exists($index = self::getLuceneIndexFile()))
        {
            return Zend_Search_Lucene::open($index);
        }
        else
        {
            return Zend_Search_Lucene::create($index);
        }
    }
 
    static public function getLuceneIndexFile()
    {
        return sfConfig::get('sf_data_dir').'/lucene/ressource.index';
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class EvenementTable extends Doctrine_Table
{
    static public function getLuceneIndex()
    {
        ProjectConfiguration::registerZend();
        if ( file_exists($index = self::getLuceneIndexFile()))
        {
            return Zend_Search_Lucene::open($index);
        }
        else
        {
            return Zend_Search_Lucene::create($index);
        }
    }
 
    static public function getLuceneIndexFile()
    {
        return sfConfig::get('sf_data_dir').'/lucene/evenement.index';
    }
Ensuite j'ai créé une tâche pour "réenregistrer" relancer le processus de sauvegarde dans la base, un genre de data-load mais pour des données déjà en base. Je lance la tâche séparément pour chacune de deux tables.

si je commence par Ressource, j'ai bien un dossier ressource.index qui est créé. Si je teste en faisant une recherche sur Ressource, le résultat est a priori celui que j'attends.

mais lorsque je relance la tâche sur Evenement, l'index est sauvegardé dans ressource.index au lieu de evenement.index comme indiqué dans EvenementTable... et du coup l'index des Ressource est écrasé...

Comme se fait-ce ? Ai-je mal procédé, ou comment créer des index pour plusieurs tables du modèle ?

Merci d'avance pour votre aide et le temps que vous me consacrerez !