Alfresco en quelques points - Recherche Tutorial

13 019 vues

Publié le

Comment rechercher avec Alfresco avec Lucene et xPath ?

Publié dans : Technologie
1 commentaire
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
13 019
Sur SlideShare
0
Issues des intégrations
0
Intégrations
983
Actions
Partages
0
Téléchargements
537
Commentaires
1
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Alfresco en quelques points - Recherche Tutorial

  1. 1. Quelle est cette fleur ? Recherche Tutorial
  2. 2. Il s’agit d’Alfresco !
  3. 3. Une solution ECM Open Source
  4. 4. Le problème ?
  5. 5. Personnes curieuses de connaître Alfresco...
  6. 6. Avec beaucoup de questions… (A formuler…)
  7. 7. Une solution possible
  8. 8. Simple présentateur de présentations sur Alfresco...
  9. 9. Avec quelques réponses… (A vérifier)
  10. 10. Allons-y !
  11. 11. Mais avant un rappel !
  12. 12. Un principe… Tout est nœud ! (Everything is NODE!) Quel beau nœud je suis!
  13. 13. Une règle… Alfresco fournit des services pour gérer Des noeuds Eh oui… Même moi j’ai un patron…
  14. 14. Maintenant Allons-y !
  15. 15. J’ai cru comprendre qu’il existe plusieurs langages de recherches possibles…
  16. 16. Effectivement! Petit tour d’horizon…
  17. 17. Lucene XPath
  18. 18. Lucene en premier!
  19. 19. 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
  20. 20. Et dans Alfresco… Comment cela fonctionne ?
  21. 21. Pour résumé…
  22. 22. 1. La collecte Type Aspect Propriétés Mot clés ID
  23. 23. 2. La conservation ID As pec Type t Proprié tés Mot clés
  24. 24. 3. L’utilisation tés Proprié Mot clés Aspect
  25. 25. Pour aller plus loin…
  26. 26. 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é
  27. 27. 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
  28. 28. Pour le vérifier…
  29. 29. Il faut consulter le modèle de données ! Fichier : contentModel.xml
  30. 30. Mais quel est le principe de la « tokenisation » ? Fichier : contentModel.xml
  31. 31. Il s’agit de découper (ou non) un (des) mot(s) en plusieurs mots clés.
  32. 32. Prenons une phrase comme exemple Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.
  33. 33. Si on n’effectue pas de segmentation (tokenised)… u t en C onIl s’agit d’une présentation PowerPoint sur Alfresco et la recherche.
  34. 34. On effectue une copie conforme de la phrase dans l’index. u t en C onIl s’agit d’une présentation PowerPoint sur Alfresco et la recherche. D EX IN Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.
  35. 35. Pour rechercher, il faudra donc connaître la phrase entière ! u t en C onIl s’agit d’une présentation PowerPoint sur Alfresco et la recherche. D EX IN Il s’agit d’une présentation PowerPoint sur Alfresco et la recherche.
  36. 36. Par contre si on effectue une segmentation… u t en C onIl s’agit d’une présentation PowerPoint sur Alfresco et la recherche.
  37. 37. On ne prend que les mots clés de la phrase! u t en C onIl s’agit d’une présentation PowerPoint sur Alfresco et la recherche. D EX IN Présentation, PowerPoint, Alfresco, recherche
  38. 38. Donc n’oubliez pas de vérifier le modèle de données !
  39. 39. OK… Démonstrations!
  40. 40. Un peu de théorie
  41. 41. Lucene dans Alfresco permet de faire des requêtes sur… • Le NodeRef (ID) • Le Type D’un NŒUD! • Les Propriétés • Les Aspects Vous travaillez pour les services secrets ? • Les Mot Clés (Contenu)
  42. 42. Les Requêt es
  43. 43. Pour faire une requête sur le Noderef ID:quot; <Mon NodeRef> quot; L’utilité de rechercher un nœud dont on sait déjà qui il est ?
  44. 44. Pour faire une requête sur le Type TYPE:quot; <TypeQName> quot; J’espère que vous vous rappelez du QName… Sinon c’est par ici
  45. 45. Pour faire une requête sur une propriété @<QNamePropriété>:quot; Valeur quot; Pourquoi c’est pas pareil que les autres?? Pourquoi c’est pas en majuscules ?
  46. 46. Pour faire une requête sur un Aspect ASPECT:quot; <AspectQName> quot; AAhh! La c’est mieux!
  47. 47. Pour faire une requête sur un mot clé du contenu d’un noeud TEXT:<valeur> Bon ok… j’ai compris le principe! On commence à s’ennuyer la…
  48. 48. Mise en conditi on
  49. 49. Voici notre terrain
  50. 50. Mise en Pratiqu e
  51. 51. 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!
  52. 52. Comment faire simplement une requête lucene Se connecter avec le rôle « admin » à Alfresco Cliquer sur Puis choisir navigateur de noeuds
  53. 53. Comment faire simplement une requête lucene Choisir le store : workspace://SpacesStore Dans la liste déroulante, choisir Lucene
  54. 54. Prêt ?
  55. 55. Je veux le « Folder Test »
  56. 56. Je veux le « Folder Test »!!!!! @cm:name:’’Folder Test’’
  57. 57. Résultat
  58. 58. Un rappel !
  59. 59. Pour identifier et rendre unique un nœud dans un store, on utilise … Un UUID
  60. 60. La concaténation du protocole, du nom du store et de l’UUID d’un nœud forme Un NodeRef
  61. 61. Dans notre cas NodeRef UUID
  62. 62. Je veux le « Foder Test » mais avec l’UUID ID:quot;workspace://SpacesStore/ b7ecc8b1-5edb-11dd- afdd-79a008cbb404quot;
  63. 63. Et si on veut plusieurs critères à notre recherche ?
  64. 64. On peut rajouter des opérateurs !
  65. 65. Les 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
  66. 66. Je veux tous les espaces avec le nom « space » TYPE:quot;cm:folderquot; AND @cm:name:quot;Spacequot; TYPE:quot;cm:folderquot; +@cm:name:quot;Spacequot; +TYPE:quot;cm:folderquot; AND @cm:name:quot;Spacequot;
  67. 67. Résultat
  68. 68. 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.
  69. 69. Ajout d’une catégorie à un espace Mise en conditi on
  70. 70. Je veux tous les folders avec le nom « space » et qui posséde une catégorie TYPE:quot;cm:folderquot; AND @cm:name:quot;Spacequot; AND ASPECT:quot;cm:generalclassifiablequot;
  71. 71. Je veux tous les espaces avec le nom « space » et qui NE posséde PAS une catégorie TYPE:quot;cm:folderquot; AND @cm:name:quot;Spacequot; AND NOT ASPECT:quot;cm:generalclassifiablequot; TYPE:quot;cm:folderquot; +@cm:name:quot;Spacequot; -ASPECT:quot;cm:generalclassifiablequot;
  72. 72. Résultat
  73. 73. Remarque Cette zone est expérimentale et est très aléatoire suivant les expériences !
  74. 74. Il existe des opérateurs spéciaux pour la recherche !
  75. 75. Les opérateurs spéciaux ? Peut remplacer un caractère * Peut remplacer plusieurs caractères
  76. 76. Je veux tous les espaces avec le nom commençant par « spa » TYPE:quot;cm:folderquot; AND @cm:name:quot;Spa*quot; TYPE:quot;cm:folderquot; +@cm:name:quot;Spa*quot;
  77. 77. Je veux tous les espaces avec le nom terminant par « ace » TYPE:quot;cm:folderquot; AND @cm:name:quot;*acequot; TYPE:quot;cm:folderquot; +@cm:name:quot;*acequot;
  78. 78. Remarque FIN DE ZONE EN CHANTIER! Cette zone était expérimentale!
  79. 79. 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
  80. 80. Maintenant XPath!
  81. 81. XPath ? • XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer. • Source w3c.org
  82. 82. Mais on parle de nœuds… Pas de xml…
  83. 83. En effet mais…
  84. 84. Un principe… Un nœud peut être vu comme Un XML J’ai une drôle de Mirroir tête moi… XML
  85. 85. La preuve dans Alfresco…
  86. 86. ACP WebApp
  87. 87. ACP Explorateur
  88. 88. Donc avec XPath, on peut naviguer dans les nœuds…
  89. 89. Effectivement ! Démonstrations..
  90. 90. Un peu de théorie
  91. 91. XPath dans Alfresco permet de faire des requêtes sur… • Le Type • Les Propriétés D’un NŒUD! • Les Aspects • Les associations Pourquoi toujours moi…
  92. 92. Les Axes
  93. 93. Vous savez jouer au jeu des 7 familles ? Eh bien les axes XPath c’est pareil!
  94. 94. Dans la famille Nœud, je voudrais moi ! self
  95. 95. Ensuite mon Père! parent
  96. 96. Ensuite mes enfants! Child
  97. 97. Ensuite mes frères ainés preceding-sibling
  98. 98. Ensuite mes soeurs cadettes following-sibling
  99. 99. Maintenant, allons plus loin dans ma famille!
  100. 100. Je veux connaître toute ma descendance ! descendant
  101. 101. Je veux connaître tous mes ancêtres ancestor
  102. 102. Je veux tous les nœuds plus âgés preceding
  103. 103. Je veux tous les nœuds plus jeunes following
  104. 104. Hein… Elle est belle ma famille?
  105. 105. Malheureusement, toute la famille n’est pas visible avec Alfresco… following following-sibling preceding-sibling preceding
  106. 106. Les Requêt es
  107. 107. Pour faire une requête sur un axe Axe::* En gros, Je veux tous les nœuds de cet axe!
  108. 108. Pour faire une requête sur une propriété Axe::*[@<QName>:’<Valeur>’] Ca me rappelle un peu Lucene…
  109. 109. Pour faire une requête sur un aspect Axe::*[hasAspect(’<QNameAspect>’)] L’aspect ne fait pas le nœud… Drôle non ?
  110. 110. Pour faire une requête sur un type Axe::*[subtypeOf(’<QNameType>’)] Attention ! Il s’agit du type et des types fils!!!
  111. 111. Pour faire une requête sur l’ensemble des propriétés et du contenu… Axe::*[contains(’<Valeur>’)] Utile, n’est il pas ?
  112. 112. Mise en conditi on
  113. 113. Voici notre terrain
  114. 114. Mise en Pratiqu e
  115. 115. Comment faire simplement une requête lucene Se connecter avec le rôle « admin » à Alfresco Cliquer sur Puis choisir navigateur de noeuds
  116. 116. Comment faire simplement une requête lucene Choisir le store : workspace://SpacesStore Dans la liste déroulante, choisir selectNodes
  117. 117. Pourquoi est ce que l’on ne prend pas XPath ??
  118. 118. C’est la même chose! Sauf que …
  119. 119. XPath : Absolue par rapport à la SelectNodes : racine du store Relatif au nœud en cours
  120. 120. Or nous on veut se placer dans un folder spécifique!
  121. 121. Prêt ?
  122. 122. Je veux le nœud en cours self::*
  123. 123. Résultat
  124. 124. Je veux les fils du nœud en cours descendant::*
  125. 125. Je veux le père du nœud en cours parent::*
  126. 126. Je veux le fils qui posséde une description « Space 1.1 Description » descendant::*[@cm:description ='Space 1.1 Description']
  127. 127. A noter que les opérateurs sont aussi disponibles en XPath…
  128. 128. 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')]
  129. 129. Je veux le fils qui possède l’aspect lié aux catégories et qui soit de type folder descendant::*[hasAspect('cm:genera lclassifiable') and subtypeOf('cm:folder')]
  130. 130. Pour en savoir plus • Wikipedia [FR] • W3Schools[ENG] • Spécifications W3C : Xpath 1.0[ENG] • Spécifications W3C : XPath 2.0[ENG] • Developpez.com (A voir!)
  131. 131. J’ai maintenant plein de nœuds! Mais Où est Charlie... Enfin… le bon nœud ?
  132. 132. Si vous cherchez un nœud, utilisez les services…
  133. 133. En premier, pensez Alfreso Service Registry !
  134. 134. Et faites appel à … AttributeService MultilangualContentService AuditService ScriptService ActionService AuthorityService AuthenticationService SearchService RuleService NodeService TemplateService AVMService CopyService LockService CategoryService CheckOutCheckInService FileFolderService ContentService MimeTypeService EditionService DictionnaryService WorkflowService ImporterService ExporterService VersionService TransactionService
  135. 135. Et faites appel à … AttributeService MultilangualContentService AuditService ScriptService ActionService AuthorityService AuthenticationService SearchService RuleService NodeService TemplateService AVMService CopyService LockService CategoryService CheckOutCheckInService FileFolderService ContentService MimeTypeService EditionService DictionnaryService WorkflowService ImporterService ExporterService VersionService TransactionService
  136. 136. Ou encore… AttributeService MultilangualContentService AuditService ScriptService ActionService AuthorityService AuthenticationService SearchService RuleService NodeService TemplateService AVMService CopyService LockService CategoryService CheckOutCheckInService FileFolderService ContentService MimeTypeService EditionService DictionnaryService WorkflowService ImporterService ExporterService VersionService TransactionService
  137. 137. Voilà! C’est fini pour aujourd’hui!
  138. 138. Maintenant à vous de chercher… Ou rechercher!
  139. 139. Des questions ???
  140. 140. Pour une prochaine fois…
  141. 141. Dans les prochains épisodes…
  142. 142. Et si je veux partager mes nœuds ?
  143. 143. Il faudra utiliser les protocoles…
  144. 144. Pour découvrir…
  145. 145. Pour aller de l’avant…
  146. 146. Et pour atteindre ces objectifs…
  147. 147. Choisissez l’ECM Open Source
  148. 148. Alfresco en quelques points… Par JM.PASCAL www.opensourceecm.fr & www.open-source-ecm.com

×