alfresco en quelques points - recherche tutorial

Post on 17-May-2015

11.391 Views

Category:

Technology

10 Downloads

Preview:

Click to see full reader

DESCRIPTION

Comment rechercher avec Alfresco avec Lucene et xPath ?

TRANSCRIPT

Recherche Tutorial

Quelle est cette fleur ?

Il s’agit d’Alfresco !

Une solution ECM Open Source

Le problème ?

Personnes curieuses de connaître Alfresco...

Avec beaucoup de questions… (A formuler…)

Une solution possible

Simple présentateur de présentations sur Alfresco...

Avec quelques réponses… (A vérifier)

Allons-y !

Mais avant un rappel !

Un principe…Tout est nœud !

(Everything is NODE!)

Quel beau nœud je suis!

Une règle…Alfresco fournit des services pour gérer

Des noeuds

Eh oui… Même moi j’ai un patron…

Maintenant Allons-y !

J’ai cru comprendre qu’il existe plusieurs langages

de recherches possibles…

Effectivement!Petit tour d’horizon…

XPath

Lucene

Lucene en premier!

Lucene ?• Apache Lucene is a high-

performance, full-featured text search engine library written entirely in Java.

• Although Lucene provides the ability to create your own queries through its API, it also provides a rich query language through the Query Parser, a lexer which interprets a string into a Lucene Query using JavaCC.

• Source: Lucene.org

Et dans Alfresco… Comment cela fonctionne ?

Pour résumé…

1. La collecte

PropriétésAspect

Mot clés

ID

Type

2. La conservation

Propriétés

Aspect

Mot clés

IDType

3. L’utilisation

Propriétés

Mot clésAspect

Pour aller plus loin…

Lors de la création d’un nœud, il y a • Une indexation de

l’ensemble des propriétés de l’élément

&

• Une indexation plein texte du contenu associé

Lors de la création d’un nœud, il y a

• Une indexation plein texte du contenu associé si le contenu est au format : – Office (Open ou Microsoft)– XML/HTML– PDF– Emails– Texte

Pour le vérifier…

Il faut consulter le modèle de données !

Fichier : contentModel.xml

Fichier : contentModel.xml

Mais quel est le principe de la

« tokenisation » ?

Il s’agit de découper (ou non) un (des)

mot(s) en plusieurs mots clés.

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

Prenons une phrase comme

exemple

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

Si on n’effectue pas de segmentation

(tokenised)…

Contenu

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

On effectue une copie conforme de la

phrase dans l’index.

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

INDEX

Contenu

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

Pour rechercher, il faudra donc connaître

la phrase entière !

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

INDEX

Contenu

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

Par contre si on effectue une

segmentation…

Contenu

Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.

On ne prend que les mots clés de la

phrase!

Présentation, PowerPoint, Alfresco, recherche

INDEX

Contenu

Donc n’oubliez pas de vérifier le modèle de

données !

OK… Démonstrations!

Un peu de théorie

Lucene dans Alfresco permet de faire des requêtes sur…

Vous travaillez pour les services secrets ?

• Le NodeRef (ID) Le NodeRef (ID)

• Le TypeLe Type

• Les PropriétésLes Propriétés

• Les AspectsLes Aspects

• Les Mot Clés Les Mot Clés (Contenu)(Contenu)

D’un NŒUD!D’un NŒUD!

Les Requêtes

Pour faire une requête sur le Noderef

L’utilité de rechercher un nœud dont on sait déjà qui

il est ?

ID:" <Mon NodeRef> "ID:" <Mon NodeRef> "

Pour faire une requête sur le Type

J’espère que vous vous rappelez du QName…

TYPE:" <TypeQName> "TYPE:" <TypeQName> "

Sinon c’est par ici

Pour faire une requête sur une propriété

Pourquoi c’est pas pareil que les autres??

@<QNamePropriété>\:" Valeur "@<QNamePropriété>\:" Valeur "

Pourquoi c’est pas en majuscules ?

Pour faire une requête sur un Aspect

AAhh! La c’est mieux!

ASPECT:" <AspectQName> "ASPECT:" <AspectQName> "

Pour faire une requête sur un mot clé du contenu d’un

noeud

Bon ok… j’ai compris le principe!

TEXT:<valeur>TEXT:<valeur>

On commence à s’ennuyer la…

Mise en condition

Voici notre terrain

Mise en Pratique

Remarque

Lucene et Alfresco!Suivant la version que vous possédez

d’Alfresco, il se peut que les résultats que vous obteniez soit totalement

différents des miens.

C’est aussi ça la magie de la recherche!

Comment faire simplement une requête lucene

Se connecter avec le rôle « admin » à Alfresco

Cliquer sur

Puis choisir navigateur de noeuds

Comment faire simplement une requête lucene

Choisir le store : workspace://SpacesStore

Dans la liste déroulante, choisir Lucene

Prêt ?

Je veux le « Folder Test »

Je veux le « Folder Test »!!!!!

@cm\:name:’’Folder Test’’@cm\:name:’’Folder Test’’

Résultat

Un rappel !

Pour identifier et rendre unique un nœud dans un store, on

utilise …

UnUUID

La concaténation du protocole, du nom du store et de l’UUID

d’un nœud forme

UnNodeRef

Dans notre cas

UUIDNodeRef

Je veux le « Foder Test » mais

avec l’UUID ID:"workspace://SpacesStore/ID:"workspace://SpacesStore/

b7ecc8b1-5edb-11dd-b7ecc8b1-5edb-11dd-afdd-79a008cbb404"afdd-79a008cbb404"

Et si on veut plusieurs critères à notre recherche ?

On peut rajouter des opérateurs !

+ Pour ajouter un critère validé - Pour ajouter un critère non validé

AND Pour ajouter un critère

OR Pour ajouter un choix entre critères

NOT Pour exclure un critère

Les Opérateurs

Je veux tous les espaces avec le nom « space »TYPE:"cm:folder" AND @cm\:name:"Space"

TYPE:"cm:folder" +@cm\:name:"Space"

+TYPE:"cm:folder" AND @cm\:name:"Space"

Résultat

Remarque

FOLDER ≈ ESPACE

Folder représente un type de nœud.

Space est la traduction littérale anglaise d’un folder.

Espace est la traduction littérale du Space anglais.

Ajout d’une catégorie à un espace

Mise en condition

Je veux tous les folders avec le nom « space » et qui posséde

une catégorieTYPE:"cm:folder"

AND @cm\:name:"Space" AND ASPECT:"cm:generalclassifiable"

Je veux tous les espaces avec le nom « space » et qui

NE posséde PAS une catégorieTYPE:"cm:folder"

AND @cm\:name:"Space" AND NOT ASPECT:"cm:generalclassifiable"

TYPE:"cm:folder" +@cm\:name:"Space" -ASPECT:"cm:generalclassifiable"

Résultat

Remarque

Cette zone est expérimentale et est très

aléatoire suivant les expériences !

Il existe des opérateurs spéciaux pour la recherche !

? Peut remplacer un caractère

* Peut remplacer plusieurs

caractères

Les opérateurs spéciaux

Je veux tous les espaces avec le nom commençant par « spa »

TYPE:"cm:folder" AND @cm\:name:"Spa*"

TYPE:"cm:folder" +@cm\:name:"Spa*"

Je veux tous les espaces avec le nom terminant par « ace »

TYPE:"cm:folder" AND @cm\:name:"*ace"

TYPE:"cm:folder" +@cm\:name:"*ace"

Remarque

FIN DE ZONE EN CHANTIER!

Cette zone était expérimentale!

Pour en savoir plus Lucene WebSite• http://lucene.apache.org/• http://lucene.apache.org/java/docs/queryparsersyntax.html

Alfresco Wiki• http://wiki.alfresco.com/wiki/Search#Lucene• http://wiki.alfresco.com/wiki/Lucene• http://wiki.alfresco.com/wiki/Lucene_Extensions_and_Issues

Maintenant XPath!

XPath ?• XPath is a language for

addressing parts of an XML document, designed to be used by both XSLT and XPointer.

• Source w3c.org

Mais on parle de nœuds… Pas de xml…

En effet mais…

Un principe…Un nœud

peut être vu commeUn XML

Mirroir

XML

J’ai une drôle de tête moi…

La preuve dans Alfresco…

WebApp

ACP

Explorateur

ACP

Donc avec XPath, on peut naviguer dans les nœuds…

Effectivement !Démonstrations..

Un peu de théorie

XPath dans Alfresco permet de faire des requêtes sur…

Pourquoi toujours moi…

• Le TypeLe Type

• Les PropriétésLes Propriétés

• Les AspectsLes Aspects

• Les associationsLes associations

D’un NŒUD!D’un NŒUD!

Les Axes

Vous savez jouer au jeu des 7 familles ?

Eh bien les axes XPath c’est pareil!

Dans la famille Nœud, je voudrais moi !

selfself

Ensuite mon Père!

parentparent

Ensuite mes enfants!

ChildChild

Ensuite mes frères ainés

preceding-siblingpreceding-sibling

Ensuite mes soeurs cadettes

following-siblingfollowing-sibling

Maintenant, allons plus loin dans ma famille!

Je veux connaître toute ma descendance !

descendantdescendant

Je veux connaître tous mes ancêtres

ancestorancestor

Je veux tous les nœuds plus âgés

precedingpreceding

Je veux tous les nœuds plus jeunes

followingfollowing

Hein… Elle est belle ma famille?

Malheureusement, toute la famille n’est pas

visible avec Alfresco…

precedingpreceding

followingfollowing

preceding-siblingpreceding-sibling

following-siblingfollowing-sibling

Les Requêtes

Pour faire une requête sur un axe

En gros, Je veux tous les nœuds de cet axe!

Axe::*Axe::*

Pour faire une requête sur une propriété

Ca me rappelle un peu Lucene…

Axe::*[@<QName>:’<Valeur>’Axe::*[@<QName>:’<Valeur>’]

Pour faire une requête sur un aspect

L’aspect ne fait pas le nœud… Drôle non ?

Axe::*[hasAspect(’<QNameAspect>’)Axe::*[hasAspect(’<QNameAspect>’)]

Pour faire une requête sur un type

Attention ! Il s’agit du type et des types fils!!!

Axe::*[subtypeOf(’<QNameType>’)Axe::*[subtypeOf(’<QNameType>’)]

Pour faire une requête sur l’ensemble des propriétés

et du contenu…

Utile, n’est il pas ?

Axe::*[contains(’<Valeur>’)Axe::*[contains(’<Valeur>’)]

Mise en condition

Voici notre terrain

Mise en Pratique

Comment faire simplement une requête lucene

Se connecter avec le rôle « admin » à Alfresco

Cliquer sur

Puis choisir navigateur de noeuds

Comment faire simplement une requête lucene

Choisir le store : workspace://SpacesStore

Dans la liste déroulante, choisir selectNodes

Pourquoi est ce que l’on ne prend pas XPath ??

C’est la même chose!Sauf que …

SelectNodes : Relatif au nœud

en cours

XPath : Absolue par rapport à la

racine du store

Or nous on veut se placer dans un folder spécifique!

Prêt ?

Je veux le nœud en cours

self::*

Résultat

Je veux les fils du nœud en cours

descendant::*

Je veux le père du nœud en cours

parent::*

Je veux le fils qui posséde une description

« Space 1.1 Description »

descendant::*[@cm:description='Space 1.1 Description']

A noter que les opérateurs sont aussi disponibles en XPath…

Je veux le fils qui possède une description « Space 1.1

Description » et qui soit de type folder

descendant::*[@cm:description='Space 1.1 Description' and

subtypeOf('cm:folder')]

Je veux le fils qui possède l’aspect lié aux catégories et

qui soit de type folder

descendant::*[hasAspect('cm:generalclassifiable') and

subtypeOf('cm:folder')]

J’ai maintenant plein de nœuds! Mais Où est Charlie... Enfin… le bon nœud ?

Si vous cherchez un nœud, utilisez les services…

En premier, pensez Alfreso Service Registry !

Et faites appel à …ActionService

AttributeServiceAuditService

AuthenticationServiceAuthorityService

AVMService

CategoryService

CheckOutCheckInService

ContentService

CopyService

DictionnaryService

FileFolderService

EditionService

ExporterServiceImporterService

MimeTypeService

MultilangualContentService

NodeService

LockService

RuleService

ScriptService

SearchService

TemplateService

TransactionServiceVersionService

WorkflowService

Et faites appel à …ActionService

AttributeServiceAuditService

AuthenticationServiceAuthorityService

AVMService

CategoryService

CheckOutCheckInService

ContentService

CopyService

DictionnaryService

FileFolderService

EditionService

ExporterServiceImporterService

MimeTypeService

MultilangualContentService

NodeService

LockService

RuleService

ScriptService

SearchService

TemplateService

TransactionServiceVersionService

WorkflowService

Ou encore…ActionService

AttributeServiceAuditService

AuthenticationServiceAuthorityService

AVMService

CategoryService

CheckOutCheckInService

ContentService

CopyService

DictionnaryService

FileFolderService

EditionService

ExporterServiceImporterService

MimeTypeService

MultilangualContentService

NodeService

LockService

RuleService

ScriptService

SearchService

TemplateService

TransactionServiceVersionService

WorkflowService

Voilà! C’est fini pour aujourd’hui!

Maintenant à vous de chercher… Ou rechercher!

Des questions ???

Pour une prochaine fois…

Dans les prochains épisodes…

Et si je veux partager mes nœuds ?

Il faudra utiliser les protocoles…

Pour découvrir…

Pour aller de l’avant…

Et pour atteindre ces objectifs…

Choisissez l’ECM Open Source

Alfresco en quelques points…

Par JM.PASCAL

www.opensourceecm.fr&

www.open-source-ecm.com

top related