Dans un agent web s'exécutant en tant qu'utilisateur web (option de l'agent "run as web user"), la methode DB.FTSearch renvoie dans la collection résultant de la recherche des documents dont l'utilisateur n'a pas forcément les droits d'accès.
On s'en rend compte car lorsque l'on parcour la collection, on tombe sur des documents qui ont leurs champs et leurs propriétés vides. Un doc.GetitemValue("Form")(0) retourne "" de même pour doc.UniversalID.
Comment contourner le problème ?
Le premier réflexe que l'on peu avoir est de faire un test sur un des champ du document et si il est vide, on passe au document suivant. Je vous parle de cette solution car c'est celle que j'avais adoptée. Ben en fait c'est une très mauvaise solution.
Le problème vient du fait que la methode DB.FTSearch renvoie au maximum 5000 documents et si votre base en contient bien plus que cette limite, l'utilisateur peut se retrouver devant un résultat de recherche ne reflétant pas la réalité.
La bonne méthode est à mon sens de tout simplement oublier db.FTSearch mais d'utiliser plutôt NotesView.FTSearch. Lorsque l'on fait un db.getView("NomVue"), il filtre la vue avec les droits de l'utilisateur. Bien entendu cette vue doit afficher tous les documents de la base (SELECT @All).
Je n'ai pas remarqué de différence notable en terme de temps de réponse.
Conclusion :
Je ne sais pas si vous avez pu constater la même chose, je ne sais pas non plus si cela est spécifique aux agents web mais quoi qu'il en soit le bug est bien là. Pensez y donc a deux fois avant d'utiliser le bon vieux db.FTSearch.
AddOn :
Ces variables du notes.ini permettent de bypasser la limitation des 5000 documents FT_MAX_SEARCH_RESULTS
TEMP_INDEX_MAX_DOC
1. YoGi
13/01/2007 12:56:49
Curieux ton truc. Ton serveur Domino est sous quelle version ?
2. julien
13/01/2007 13:35:24
6.5.5
3. Smicky
14/01/2007 12:04:16
Pas normal du tout...ca ressemble a un bug car en théorie ca doit marcher (et ca a toujours marché pour moi...)
4. Laurent FRIBOULET
30/01/2007 15:25:48
Bonjour,
C'est un plaisir de lire ce type d'information car j'en apprend beaucoup.
5. Sylvain DE WEERDT
01/02/2007 18:29:52
Bonjour,
J'ai le même souci sur l'abonnement, il affiche tous les titres des docs sans restriction, au support Lotus ils n'étaient même pas au courrant de cette fonction...
6. Richard
29/08/2007 18:02:12
Salut,
J'ai eu le meme problème.
Mais en utilisant le client notes.
Un agent traitait les docs d'une collection de docs retournée par db.FTSearch.
Je voyais effectivement dans mes logs des docs n'ayant pas d'UNID.
J'ai regardé avec le debugger, pareil, j'avais au moment du traitement du doc, un doc sans aucune propriété !
J'ai perdu pas mal de temps à trouver de quel type etait ces étranges document fantômes sans trouvé...
Et bien merci maintenant je sais !
M'en vais d'ailleur faire un test sur une petite base avec 10 docs pour etre certain.
a+
Richard




- 









