AvancéDepuis Zend Framework 1.6, gestion des transformations de format d'indexZend_Search_Lucene fonctionne avec les index Lucene Java 1.4-1.9, 2.1 et 2.3.
Le format actuel de l'index peut être obtenu par
Les modifications de l'index n'arrivent que si une mise à
jour de l'index est faite. Ceci arrive lorsqu'un nouveau document est ajouté à l'index,
ou lors de l'optimisation manuelle de l'index par
Dans un tel cas, Zend_Search_Lucene peut convertir l'index vers une version plus haute. Ceci arrive toujours pour le format Zend_Search_Lucene::FORMAT_PRE_2_1, alors transformé en format 2.1.
Vous pouvez gérer ces conversions et notamment le format d'arrivée avec
Les conversions vers des versions antérieure de formats ne sont pas supportées.
Utiliser les propriétés statiques de l'indexL'objet Zend_Search_Lucene utilise la méthode de destructeur pour valider ses changements et faire ses optimisations et nettoyages.
Il stocke les documents ajoutés en mémoire et les vide dans un segment sur le
disque en fonction du paramètre
Si la limite Les propriétés statiques d'un objet sont détruites après la dernière ligne de code exécutée. Aussi, le destructeur est correctement invoqué à ce point de l'exécution du programme. Un problème potentiel peut être les exceptions. Celles envoyées dans un destructeur d'un objet statique n'ont pas de contexte, car le destructeur est appelé après la fin d'exécution du script. Vous pouvez alors voir une "Fatal error: Exception thrown without a stack frame in Unknown on line 0" au lieu de l'exception décrivant réellement le contexte. Zend_Search_Lucene propose alors un détournement de ce problème avec la méthode commit(). Elle sauvegarde les changements et libère la mémoire utilisée pour stocker les segments. Vous pouvez utiliser la méthode commit n'importe quand, même plusieurs fois, pendant l'exécution de votre script. Vous pouvez aussi continuer à utiliser l'objet Zend_Search_Lucene pour rechercher, ajouter ou supprimer des document, même après une opération de commit (validation). L'appel à commit() est simplement une sécurité pour éviter les problème d'exception dans le destructeur de Zend_Search_Lucene :
|