Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/08/2007, 16h13   #1
Invité de passage
 
Inscription : août 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 7
Points : 2
Points : 2
Par défaut [Zend 1.0.0][Zend_Search_Lucene] modification d'index

Bonjour,

Je voudrais utiliser Zend_Search_Lucene pour permettre une recherche "par mots clés" dans une BDD documentaire.

J'ai suivi la doc en ligne: la création de l'index n'a pas posé de problème et j'arrive à faire des requêtes.
Par contre, je souhaiterais modifier l'index pour retirer la référence d'un fichier supprimé et ça ne marche pas: le fichier ressort toujours après 1 requête, l'index n'a donc pas dû être modifié.

Script de création:

Code :
1
2
3
4
5
6
7
8
9
$index = new Zend_Search_Lucene($chemin_index);
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::UnStored('titre',$titre));// Contenu du titre
$doc->addField(Zend_Search_Lucene_Field::UnStored('date_mise_ligne',$date_mise_ligne));  
$doc->addField(Zend_Search_Lucene_Field::Keyword('id_fichier',$id_fichier));
$doc->addField(Zend_Search_Lucene_Field::UnStored('langue',$db_biblio->get_langue($id_langue)));
$doc->addField(Zend_Search_Lucene_Field::UnStored('annee',$annee));
$index->addDocument($doc);
$index->commit();
script de modification:

Code :
1
2
3
4
5
6
$index = new Zend_Search_Lucene($chemin_index);
$hits = $index->find("id_fichier:".$id_fichier);
echo print_r($hits);
foreach ($hits as $hit)
$index->delete($hit->id);
$index->commit();
l'echo me sort un tableau vide ...
bend37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 16h46   #2
Invité de passage
 
Inscription : août 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 7
Points : 2
Points : 2
Par défaut Une solution ?

Bonjour,

Visiblement ma requête n'inspire pas grand monde ...
Je peux bien sûr filter les résultats pour n'afficher que ceux correspondant à un document effectivement présent en BDD, mais c'est un peu lourdingue.
A priori, c'est la méthode find() qui ne donne pas le résultat attendu, puisque si on applique la méthode delete() avec l'id correpondant, l'index est bien modifié.
bend37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 17h07   #3
Membre confirmé
 
Avatar de wace
 
Inscription : septembre 2003
Messages : 225
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 225
Points : 223
Points : 223
Hello

Pour le delete j'ai fait comme ca :

Code :
1
2
3
4
5
6
7
8
9
10
 
$term =  new Zend_Search_Lucene_Index_Term($Id, 'object_id');
$query = new Zend_Search_Lucene_Search_Query_Term($term);
$hits = array();
$hits  = $index->find($query);
 
foreach ($hits as $hit)
{
   $index->delete($hit->id);
}
En fait la difference pour moi viens du query ou j'ai creer un vrai objet query
__________________
Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
[article 1er Declaration Universelle des Droits de l'Homme]
www.baseball-grizzlys.com
wace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 17h41   #4
Invité de passage
 
Inscription : août 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 7
Points : 2
Points : 2
Merci beaucoup. J'ai fait la modif et ça marche sans problème.
La doc officielle de ZF n'est pas toujours au top.
bend37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h48.


 
 
 
 
Partenaires

Hébergement Web