Recherches avancées

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

Recherches avancées

Bonjour,
Je voudrai savoir quelles sont les possibilités de recherches avancées d'Alfresco ?
Voici quelques exemples de besoins:
J'ai le modèle suivant:
Type TA qui porte les propriétés pA1 et pA2
Type TB qui porte les propriétés pB1 et pB2
Et l'association MyLink de A vers B qui porte les propriétés pL1, pL2
Je souhaite rechercher:
- les objets de type TA et leurs objets de type TB associés (MyLink est une agregation)
- les objets de type TA dont la propriété pA1 vaut "val1", reliés à des objets de type TB par l'association MyLink
- les objets de type TA dont la propriété pA1 vaut "val1", reliés par l'association MyLink aux objets de type TB dont la propriété pB1 vaut "val2"
- les objets de type TA dont la propriété pA1 vaut "val1", reliés aux objets de type TB dont la propriété pB1 vaut "val2" par des liens MyLink dont la propriété "pL1" vaut "xxx"

En gros, j'ai besoin d'effectuer l'équivalent de "joins" dans une base de données relationnelle.

1/ est-ce possible ?
2/ si oui, comment ?
3/ ou puis-je trouver des exemples ?

Question subsidiaire: ces requetes complexes peuvent-elles prendre en compte l'héritage des types (recherche des objets TA et sous-types de TA) ?

Merci d'avance
7 Replies
rivarola
Active Member

Re: Recherches avancées

Bonjour,

Le SearchService d'Alfresco ne sait pas exploiter les associations (c'est en projet).

l'association MyLink de A vers B qui porte les propriétés pL1, pL2
Comment une association peut-elle porter des propriétés dans Alfresco ? Le modèle ne le permet pas.
rivarola
Active Member

Re: Recherches avancées

Je n'avais pas vu la question subsidiaire… le seul point positif en plus !

Dans Alfresco toutes les requêtes Lucene TYPE: et ASPECT: prennent en compte l'héritage des types.
rod
Member II

Re: Recherches avancées

Merci rivarola pour vos réponses.

Je me demande alors pourquoi est-ce qu'Alfresco fonctionne avec une base de données puisqu'il ne sait pas exploiter les données qu'il y stoque ?

Quand vous dites que c'est en projet, avez-vous une idée du type de fonctionalité qui sera disponible ? Sera-t-il possible d'éditer n'importe quel type de rapport, même complexe (comme dans Birt, par exemple) ?

Remarque au passage: lorsque je vois le schema de la base de données, je suis un peu inquiet sur les performances que l'on obtiendrait en faisant des recherches complexes (en prenant par exemple en compte l'héritage) …
Mais je me trompe peux être.
Les derniers bench très favorables sur Alfresco ne devaient pas couvrir ce type de use case.
rivarola
Active Member

Re: Recherches avancées

Bonjour,

Je me demande alors pourquoi est-ce qu'Alfresco fonctionne avec une base de données puisqu'il ne sait pas exploiter les données qu'il y stoque ?

Il faut bien disssocier la base de données du service de recherche. Dans Alfresco les recherches sont basées sur Lucene qui utilise un index séparé de la base de données. Les ingénieurs d'Alfresco ont choisi d'indexer les contenus, les attributs (en fonction des directives d'indexation présentes dans le data model), les types, les chemins, les catégories, mais (pas encore) les associations. Ces dernières sont présentes en base et pas dans l'index. On peut les exploiter en passant par le NodeService mais pas par le SearchService.

Quand vous dites que c'est en projet, avez-vous une idée du type de fonctionalité qui sera disponible ?
J'ai juste eu un rapide échange avec Andy la-dessus il y à quelques mois. Il envisageait d'indexer les associations avec Lucene, mais je n'en sais pas plus.

Remarque au passage: lorsque je vois le schema de la base de données, je suis un peu inquiet sur les performances que l'on obtiendrait en faisant des recherches complexes (en prenant par exemple en compte l'héritage) …
L'héritage est pris en compte dans la recherche grâce à l'interpréteur de requêtes Lucene qu'a développé Alfresco. Ensuite la recherche est effectuée sur l'index sans passer par la base.
michaelh
Active Member

Re: Recherches avancées

Des évolutions sont en effet à l'étude en ce qui concerne l'implémentation Lucene, et il y a un gros travail d'analyse en cours sur le sujet (ce n'est pas totalement neutre car ça va plus loin que les seules associations).

On ne devrait pas voir d'implémentation avant la version 3.0 mini.
rod
Member II

Re: Recherches avancées

Merci pour ces réponses.

Je comprend que pour l'instant, on peut:
- soit faire des requètes en base de données (via le nodeService)
- soit faire des requètes dans lucène (via le searchService)
Mais qu'on ne peut pas combiner les 2.

Je reviens sur un point:
Comment une association peut-elle porter des propriétés dans Alfresco ? Le modèle ne le permet pas.
Il faudra donc que je trouve un contournement:
Par exemple en utilisant un cmSmiley Surprisedbjets et deux associations.

Mais en regardant le modèle de données standard, j'ai vu qu'il y avait un type "cm:link", portant une propriété de type "d:noderef".
Ce type est ensuite étendu par "app:filelink" et "app:folderlink".
Pensez-vous que je puisse étendre cm:link et le faire "pointer" vers mon association (une association a-t-elle seulement un noderef ?).

Bref, avez-vous déjà rencontré le besoin de modéliser des associations portant des attributs ?

Merci d'avance
rivarola
Active Member

Re: Recherches avancées

Je ne sais pas trop comment modéliser proprement des attributs sur les associations dans le data model.
On peut par contre instancier des attributs pour mémoriser des associations (voir type d:assocref et d:childassocref). Ce qui revient sans doute à "pointer sur une association". Je crois que ces attributs sont utilisés dans le modèle de suivi des versions.