Requete Lucene (Doc Récent) trop longue lors de l'execution

cancel
Showing results for 
Search instead for 
Did you mean: 
marcn_3929
Member II

Requete Lucene (Doc Récent) trop longue lors de l'execution

Bonjour à tous,
Je dois récupérer les documents récents sur Alfresco, pour celà j'ai écrit une requete lucene:
search.luceneSearch("PATH:\"/app:company_home/cm:Library//*\"", "@cm:modified", false);
J'adapte après le résultat pour n'avoir que les 5 ou 10 derniers documents.

Le problème vient du fait que lorsque j'exécute mon script, ce dernier dure plus de 20 secondes. J'aimerai savoir comment raccourcir ce temps. J'ai lu qu'il fallait modifier le fichier repository.properties mais en modifiant:
"index.tracking.maxTransactionsPerLuceneCommit"
ou/et
"index.tracking.maxRecordSetSize"
ou/et
"system.acl.maxPermissionCheckTimeMillis"
mon script met toujours autant de temps avant de renvoyer sa réponse.

Je ne vois pas trop comment faire pour améliorer les performances de mon script. Si il y a un autre moyen de procéder, je suis preneur!

Marc
4 Replies
bka
Member II

Re: Requete Lucene (Doc Récent) trop longue lors de l'execution

Vous n'améliorerez pas les performances en jouant sur ces paramètres, le défaut de performance est principalement du au critére PATH ("/app:company_home/cm:Library//*), je suppose qu'il y a beaucoup de documents à cet emplacement et donc l'utilisation d'expression joker type "//" se révele trés couteuse.

A priori, plusieurs solutions :
- Ne pas utiliser de critéres PATH mais plutot la présence d'un aspect/valeur de propriétés sur les documents cibles
- Cibler mieux votre recherche par PATH (type PATH:"/app:company_home/cm:Library/cm:Type/" OR PATH:"/app:company_home/cm:Library/cm:Type/cmSmiley FrustratedubType/*"
marcn_3929
Member II

Re: Requete Lucene (Doc Récent) trop longue lors de l'execution

Merci de votre réponse!
J'avais pensé à ça aussi et j'ai donc changé ma requete lucene:

search.luceneSearch("PATH:\"/app:company_home/cm:Library//*\" AND TYPE:\"mx:LibraryContent\"", "@cm:modified", false);

Vous avez raison il y a près de 2300 documents dans Library, j'ai donc affiné la recherche sur le TYPE et le temps de réponse du script passe à 15secondes (ce qui est toujours beaucoup trop).

Il n'y a donc vraiment aucun moyen d'augmenter les performances de ce script ?

La dernière solution est de faire tourner ce script en background mais il aurait été préférable d'avoir une recherche rapide!

Marc
bka
Member II

Re: Requete Lucene (Doc Récent) trop longue lors de l'execution

Plusieurs possibilités :
- C'est le critére PATH qui est limitant (dans certaines versions il est interprété quelque soit les autres critéres), il faudrait donc créer une règle qui ajoute un aspect "Marqueur" lors de la création d'un document dans l'espace Library (et ses sous espaces), puis ajouter un critere ASPECT ciblant l'aspect marqueur à la place du critére Path
- C'est la vérification des permissions sur chacun des résultats qui est couteuse, pour en avoir le coeur net essayer avec l'utilisateur admin (normalement la vérif des permissions devraient être désactivé), si c'est le cas il n'y a pas grand chose à faire si ce n'est de forcer l'utilisateur à saisir d'autre critére pour affiner sa recherche
- Limitation de l'architecture, quel est la configuration de votre serveur alfresco/base de données ?
marcn_3929
Member II

Re: Requete Lucene (Doc Récent) trop longue lors de l'execution

Merci de votre réponse!
En faite j'avais déjà "marqué" les documents que je devais scanner. C'est pourquoi j'execute ma recherche seulement sur les mx:LibraryContent. De plus, j'étais déjà en admin lorsque je testais cette requete.
Je ne connais pas la limitation de mon architecture mais j'ai décidé d'agir autrement. J'ai créer un programme java pour accéder à la base de donnée SQL et me renvoyer les récents documents. Ce programme fonctionne en 5 secondes ce qui est bien mieux que les 15 secondes de départ! Reste plus qu'a faire passer ça en webscript!
Merci de votre aide!

Marc