[Lucene] Requête avec filtre sur nom du noeud parent

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-03-2010 12:06 PM
Bonsoir,
Je suis en train de m'arracher les cheveux sur une requête Lucene. Je fais une recherche sur une ensemble de nœuds de type content (des fichiers pdf) qui se trouvent dans une arborescence du genre celle-ci :
BASE_DOCUMENTAIRE
J'ai parcouru le wiki sur la recherche Alfresco (http://wiki.alfresco.com/wiki/Search) sans grand résultat (beaucoup de pistes, mais rien au final) et j'ai cherché sur le net différentes façon de faire ma recherche (avec Lucene ou XPATH), mais toujours aucune solution.
J'en viens donc à ma question, est-ce bien faisable ?
Je suis en train de m'arracher les cheveux sur une requête Lucene. Je fais une recherche sur une ensemble de nœuds de type content (des fichiers pdf) qui se trouvent dans une arborescence du genre celle-ci :
BASE_DOCUMENTAIRE
- |-> TEST
- |-> TYPE_465_TOTO_10
- |->ficher pdf
|->ficher pdf
|->ficher xml
- |->ficher pdf
|->ficher xml
- |->TYPE_111_TOTO_15
- |->ficher pdf
|->ficher xml
- |->ficher pdf
|->ficher xml
J'ai parcouru le wiki sur la recherche Alfresco (http://wiki.alfresco.com/wiki/Search) sans grand résultat (beaucoup de pistes, mais rien au final) et j'ai cherché sur le net différentes façon de faire ma recherche (avec Lucene ou XPATH), mais toujours aucune solution.
J'en viens donc à ma question, est-ce bien faisable ?
Labels:
- Labels:
-
Archive
7 REPLIES 7

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 04:34 AM
C'est possible de plusieurs manières (PATH, XPATH, CMIS), et vous avez regardé la bonne page du wiki, pouvez-vous nous préciser ce qui n'a pas abouti ?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 05:41 AM
J'ai oublié de préciser que je débute avec Alfresco.
Alors, voici en gros ce que j'ai pu tester :
=> Avec une requête lucene, en utilisant PATH :
J'ai aussi essayé avec les mots clés PARENT et PRIMARYPARENT afin de filtrer le nœud parent en dehors de PATH, mais ils ne permettent visiblement que de filtrer sur l'ID du nœud.
Je suis revenue ce matin sur XPATH (dans le navigateur de nœud, j'ai choisi "selectnodes" en mode de recherche) :
De plus, j'ai du mal a transcrire cette requête dans le PATH d'une requête lucene (en échappant les "[" et "]") car, je ne l'ai pas précisé, mais il me faut aussi filtrer sur une période de création des fichiers pdf (ce que j'ai pu faire en lucene).
J'espère ne pas être trop confus dans mon explication. J'avoue que je demande le moins possible d'aide car c'est en cherchant que l'ont apprend (mais ça prend du temps
).
Alors, voici en gros ce que j'ai pu tester :
=> Avec une requête lucene, en utilisant PATH :
PATH:"app:company_home/montest:base_documentaire/montest:test//*" AND TYPE:"cm:content" AND @cm\:name:*.pdf
Cela me renvois bien les fichier PDF, mais je n'arrive pas à filtrer sur le nœud parent. Voici ce que j'ai essayé pour filtrer avec le nom du parent :PATH:"app:company_home/montest:base_documentaire/montest:test//montest:*toto*//*"
->Ceci ne fonctionne pas.PATH:"app:company_home/montest:base_documentaire/montest:test//montest:%toto%//*"
->mon filtre sur "toto" est ignoré (j'ai essayé les % sans vraiment savoir si c'était un caractère clé pour lucene)J'ai aussi essayé avec les mots clés PARENT et PRIMARYPARENT afin de filtrer le nœud parent en dehors de PATH, mais ils ne permettent visiblement que de filtrer sur l'ID du nœud.
Je suis revenue ce matin sur XPATH (dans le navigateur de nœud, j'ai choisi "selectnodes" en mode de recherche) :
app:company_home/montest:base_documentaire/montest:test//*[like(@cm:name, '*toto*')]//*[like(@cm:name, '%.pdf')]
Mais je coince sur le filtre de fichier pdf. Il est ignoré et je récupère tous les fichiers.De plus, j'ai du mal a transcrire cette requête dans le PATH d'une requête lucene (en échappant les "[" et "]") car, je ne l'ai pas précisé, mais il me faut aussi filtrer sur une période de création des fichiers pdf (ce que j'ai pu faire en lucene).
J'espère ne pas être trop confus dans mon explication. J'avoue que je demande le moins possible d'aide car c'est en cherchant que l'ont apprend (mais ça prend du temps


Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 06:03 AM
Je me pose des questions quant aux espaces que vous auriez créés sous un éventuel QName ayant pour préfixe "montest" ?
Comment avez-vous créé vos espaces ? A quoi correspond le préfixe "montest" ?
Avez-vous navigué au sein du navigateur de noeuds pour vérifier les chemins ?
Comment avez-vous créé vos espaces ? A quoi correspond le préfixe "montest" ?
Avez-vous navigué au sein du navigateur de noeuds pour vérifier les chemins ?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 06:16 AM
J'ai renommé les noeud de l'arborescence. Celle-ci m'est imposée.
Par contre, je viens de m'apercevoir que les espaces en début de ligne sont supprimé sous phpbb, du coup, mon schéma d'arborescence ne correspond à rien. Voici comment il est (j'édite quand même mon premier post) :
BASE_DOCUMENTAIRE
Par contre, je viens de m'apercevoir que les espaces en début de ligne sont supprimé sous phpbb, du coup, mon schéma d'arborescence ne correspond à rien. Voici comment il est (j'édite quand même mon premier post) :
BASE_DOCUMENTAIRE
- |-> TEST
- |-> 2010
- |-> 10
- |-> 29
- |-> TYPE_465_TOTO_10
- |->ficher pdf
|->ficher pdf
|->ficher xml
- |->ficher pdf
|->ficher xml
- |-> 11
- |-> 02
- |->TYPE_111_TOTO_15
- |->ficher pdf
|->ficher xml
- |->ficher pdf
|->ficher xml

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 06:24 AM
Ce qui m'interroge, ce sont les requêtes de la forme suivante (préfixe "montest") :
Out Of the box, si vous créez un espace "base_documentaire" dans Alfresco via l'interface, son chemin sera :
app:company_home/cm:base_documentaire/
app:company_home/montest:base_documentaire/
Out Of the box, si vous créez un espace "base_documentaire" dans Alfresco via l'interface, son chemin sera :
app:company_home/cm:base_documentaire/

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-04-2010 06:52 AM
J'avoue que cela m'a fait galérer car je voyais le nœud en explorant et je n'arrivais pas à l'atteindre avec ma requête car j'utilisais "cm:". Cela dit, comme indiqué précédemment, le modèle m'est imposé.
J'en reviens donc à ma question initiale, est-il possible d'ajouter un filtre sur le nom du nom parent de mes fichier PDF, voir de filtrer directement dans mon PATH , sachant que je peux atteindre "TYPE_465_TOTO_10" par "cm:TYPE_465_TOTO_10" (contrairement à ce que j'ai indiqué plus haut dans mes requêtes, mais cela ne change rien au résultat) :
J'en reviens donc à ma question initiale, est-il possible d'ajouter un filtre sur le nom du nom parent de mes fichier PDF, voir de filtrer directement dans mon PATH , sachant que je peux atteindre "TYPE_465_TOTO_10" par "cm:TYPE_465_TOTO_10" (contrairement à ce que j'ai indiqué plus haut dans mes requêtes, mais cela ne change rien au résultat) :
PATH:"app:company_home/montest:base_documentaire/montest:test//cm:TYPE_465_TOTO_10//*"

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-05-2010 03:58 AM
Il manque un / au début avec app:company_home.
Faites attention à ce genre de requête PATH avec des wildcards, sont plus lentes que des requêtes par valeur de métadonnées (important donc de bien configurer les caches correspondant si inévitables). Peut être plus simple dans votre cas de tagger les fichiers en question avec un aspect et de rechercher ensuite les fichiers portant l'aspect.
Aussi possible de rechercher par mimetype, voir http://wiki.alfresco.com/wiki/Search#Finding_nodes_by_content_mimetype.
Faites attention à ce genre de requête PATH avec des wildcards, sont plus lentes que des requêtes par valeur de métadonnées (important donc de bien configurer les caches correspondant si inévitables). Peut être plus simple dans votre cas de tagger les fichiers en question avec un aspect et de rechercher ensuite les fichiers portant l'aspect.
Aussi possible de rechercher par mimetype, voir http://wiki.alfresco.com/wiki/Search#Finding_nodes_by_content_mimetype.
