80 CHAPITRE 4 — Application <strong>de</strong>s résumés SAINTETIQ à l’interrogation flexible• z 1 .épaisseur = 〈1.0/mince〉 et z 1 .dureté = 〈1.0/doux〉 ;• z 2 .épaisseur = 〈1.0/épais〉 et z 2 .dureté = 〈0.8/dur〉.Aucun <strong>de</strong>s résumés z 1 et z 2 ne correspondant à la requête dans son sens strict, z 0 constitue lerésultat approché fourni <strong>comme</strong> réponse pour ce qui est du sous-arbre <strong>de</strong> racine z 0 .La requête Q 0 est remplacée par Q 1 , dont la caractérisation est donnée par z 0 , toujours surles attributs épaisseur et dureté. On a C 1 = {{mince, épais}, {doux, dur}}.Toutefois, ce fonctionnement requiert <strong>de</strong> déterminer, par l’algorithme 1, que la requête n’apas <strong>de</strong> résultat et, par la suite, <strong>de</strong> rechercher les points d’échec afin <strong>de</strong> déduire les requêtesmodifiées. L’algorithme 3 supprime la nécessité <strong>de</strong> <strong>de</strong>ux explorations en constituant <strong>de</strong>ux listesrésultats : celle <strong>de</strong>s résumés sélectionnés (L res ) et celle <strong>de</strong>s résumés à la base <strong>de</strong> requêtes modifiées(L Q ), la <strong>de</strong>rnière n’étant utile que si la première est vi<strong>de</strong>.L’algorithme effectue le même parcours que l’algorithme 1. Il utilise la correspondance,notée myCorr, du résumé z à la requête. Si le résumé répond à la requête, il est inséré dans laliste <strong>de</strong>s résultats (L res ). Si une exploration du sous-arbre est nécessaire pour trouver d’éventuelsrésultats (myCorr = excès), elle est effectuée par appel récursif <strong>de</strong> la procédure Sel-Guidée. Àl’issue <strong>de</strong> cette exploration, z est inséré dans la liste L Q si aucun résultat n’est trouvé. Au final,Sel-Guidée fournit les listes L res et L Q .Algorithme 3 Procédure Sel-Guidée(z, myCorr, Q)L res ← 〈〉L Q ← 〈〉si myCorr = exacte alorsAjouter(z, L res )sinonfin sisi myCorr = excès alorsfin sipour chaque résumé z fils fils <strong>de</strong> z fairecorr f = Corr(z fils , Q)L res ← L res + Sel-Guidée(z fils , corr f , Q)fin poursi L res = 〈〉 alorsfin siAjouter(z fils , L Q )retourner L res , L Q
CHAPITRE 4 — Application <strong>de</strong>s résumés SAINTETIQ à l’interrogation flexible 814.3.6 Expression <strong>de</strong>s résultatsLa modification <strong>de</strong> requêtes, telle qu’elle est décrite ci-<strong>de</strong>ssus, rend possible l’obtention<strong>de</strong> résultats issus <strong>de</strong> plusieurs requêtes modifiées différentes. Ces requêtes sont plus ou moinsproches <strong>de</strong> la requête initiale. Il <strong>de</strong>vient possible d’effectuer un classement <strong>de</strong>s résultats et doncd’exprimer une préférence <strong>de</strong> certains résultats par rapport à d’autres. Il semble naturel quele critère <strong>de</strong> classement <strong>de</strong>s résultats soit la distance <strong>de</strong>s requêtes modifiées relativement à larequête utilisateur. Ainsi, les résultats se voient associer la distance <strong>de</strong> la requête dont ils sontun résultat.On notera que la modification apparaît <strong>comme</strong> un relâchement <strong>de</strong>s contraintes <strong>de</strong> la recherchecar la nouvelle requête obtenue est plus générale. Cependant, chaque substitution d’unerequête Q par une requête Q ∗ est locale <strong>comme</strong> l’explicite l’exemple 19 ci-après. <strong>Le</strong> caractèrelocal <strong>de</strong> la modification se justifie par <strong>de</strong>ux raisons :• le fait que l’échec survient à un point précis du parcours, en l’occurrence un résuméz. La modification a pour but <strong>de</strong> réparer la requête au point d’échec afin <strong>de</strong> permettrela poursuite <strong>de</strong> l’exploration <strong>de</strong> la hiérarchie. Il n’est pas utile d’étendre la portée <strong>de</strong>la modification au-<strong>de</strong>là <strong>de</strong> l’espace <strong>de</strong> données décrit par z car l’objectif poursuivi estatteint ;• le nombre <strong>de</strong>s échecs qui, sans ce caractère local, ferait perdre en efficacité. L’algorithme<strong>de</strong> recherche tire en effet parti <strong>de</strong>s coupures <strong>de</strong> branches : plus le nombre <strong>de</strong> coupures estélevé, meilleure est l’efficacité <strong>de</strong> la recherche. Une coupure correspond, dans l’optique<strong>de</strong> la modification, à un point d’échec, et donc, à une requête <strong>de</strong> substitution supplémentaire.Si la contrainte <strong>de</strong> localité était supprimée, toutes les requêtes <strong>de</strong> substitutionseraient exécutées sur l’ensemble <strong>de</strong> la hiérarchie, ce qui dégra<strong>de</strong>rait les performances dutraitement.Exemple 19 :Considérons une requête initiale Q 0 adressée à une hiérarchie <strong>de</strong> racine z 0 et <strong>de</strong>ux pointsd’échec arbitraires, z 1 et z 2 . <strong>Le</strong>s requêtes <strong>de</strong> substitution Q 1 et Q 2 sont alors composées pourchacun <strong>de</strong> ces points.On distingue, suivant la requête dont ils sont un résultat, trois types <strong>de</strong> résumés sélectionnés :ceux <strong>de</strong> l’arbre z 0 , ceux du sous-arbre z 1 et ceux du sous-arbre z 2 .<strong>Le</strong>s résumés sélectionnés par Q 1 ne se retrouveront que dans le sous-arbre <strong>de</strong> sommet z 1même s’il existe ailleurs dans l’arbre, <strong>de</strong>s résumés qui auraient été sélectionnés si Q 1 avait étéadressée à toute la hiérarchie (à partir <strong>de</strong> z 0 ). Il en est <strong>de</strong> même pour Q 2 .En résumé, la modification s’articule <strong>comme</strong> suit avec l’algorithme 2.