sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-developers] LuceneDocumentBase... encore


From: Pierrick Brihaye
Subject: [sdx-developers] LuceneDocumentBase... encore
Date: Sat, 29 Jun 2002 23:42:16 +0200

Bonsoir,

Je viens de travailler un peu sur notre fameuse classe et... j'ai découvert des 
problèmes potentiels qui nécessitent à mon avis une discussion avant d'aller 
plus loin.

Voilà :

L'interface DocumentBase définit la méthode index(....) avec un 
IndexableDocument.
En revanche, elle définit la méthode delete(...) avec un Document.

On a là un parti qui serait tout d'abord à préciser. En effet, si on part avec 
une approche "dure" en typant tout sur IndexableDocument, on se prive de la 
possibilité d'ajouter ou détruire un document non indexable depuis la base de 
documents, ce qui serait dommage car, intellectuellement, il est tout à fait 
possible d'ajouter un document sans vouloir l'indexer (par exemple, ajouter un 
document attaché à un document indexable, pas forcément - encore - indexé 
d'ailleurs)

Si on part avec une approche "souple", on va devoir remanier la gestions des 
entités dans la look-up index. Voici pourquoi :

apparemment, chaque document entré dans une base fait l'objet d'une entité dans 
le look-up index, ce qui paraît tout à fait normal. MAIS les documents attachés 
nécessitent également la modification de l'entité du document owner ce qui, en 
l'état actuel du code et si je ne me trompe pas *n'est pas fait* dans delete ! 
On risque donc de se retrouver avec des entités incohérentes pour les documents 
indexables possédant des documents attachés.

A mon avis, et si on veut garder l'approche "souple", il faudrait donc revoir 
la gestion des entités des look-up index pour que les documents attachés 
stockent leur owner plutôt que l'inverse (actuellement, les owners stockent 
leurs documents attachés). Ca permet, entre autres, la comptage de références 
et, sans doute, plus de performance sur l'interrogation et le traitement des 
look-up index.

Autre problème potentiel, quoique moins grave :

index(...) appelle add(...). Si on a un document indexable avec documents 
attachés, ce add va également appaler add. Aucun risque de débordement de pile 
:-) mais ça gêne considérablement la séparation des tâches. Je décris la 
succession actuelle :

add de l'owner :
écriture de l'owner dans le repository
- add du document attaché :
- écriture du document attaché dans le repository
- écriture de l'entité de look-up du document attaché
[autant de fois qu'il y a de documents attachés]
écriture de l'entité de look-up de l'owner
écriture du search-index de l'owner

Je me demande si on ne devrait pas, lors d'un index (ou d'un delete 
d'ailleurs), créer une liste possédant autant d'entrées que nécessaires.

de documents à ajouter dans le repository (owners ou documents attachés)
d'entités à ajouter dans le look-up index (owners ou documents attachés)
d'entrées à ajouter dans le search index (owners seulement)

... et sauvegarder (ou détruire) tout ça.

Bien sûr, le terme "ajouter" est générique. Lors d'une mise à jour, la 
constitution de la liste est plus compliquée que ça.

Voilà. Le problème m'a semblé suffisament sérieux pour que je n'aille pas plus 
loin sans votre avis sur la question.

A+

Pierrick Brihaye
mailto:address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]