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
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. 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
30. Mais quel est le
principe de la
« tokenisation » ?
Fichier : contentModel.xml
31. Il s’agit de découper
(ou non) un (des)
mot(s) en plusieurs
mots clés.
32. Prenons une
phrase comme
exemple
Il s’agit d’une présentation PowerPoint
sur Alfresco et la recherche.
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. 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. 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. 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. 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
42. 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)
44. 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 ?
45. 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
46. 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 ?
47. Pour faire une requête sur
un Aspect
ASPECT:quot; <AspectQName> quot;
AAhh! La c’est mieux!
48. 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…
52. 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!
53. Comment faire simplement
une requête lucene
Se connecter avec le rôle
« admin » à Alfresco
Cliquer sur
Puis choisir navigateur de
noeuds
54. Comment faire simplement
une requête lucene
Choisir le store :
workspace://SpacesStore
Dans la liste déroulante,
choisir Lucene
68. 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
69. 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;
71. 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.
73. 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;
74. 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;
79. 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;
80. 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;
81. Remarque
FIN DE
ZONE EN CHANTIER!
Cette zone était
expérimentale!
82. 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
94. 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…
129. Je veux
le fils qui posséde une description
« Space 1.1 Description »
descendant::*[@cm:description
='Space 1.1 Description']
130. A noter que les opérateurs sont
aussi disponibles en XPath…
131. 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')]
132. 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')]
133. 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!)