Requete lucene et associations

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

Requete lucene et associations

Bonjour,

J'ai à ma disposition des dossiers qui ont, par association, un contenu. J'aimerais préciser à Lucene des critères de recherche sur ce contenu pour qu'il me renvoie les dossiers.
Auriez-vous une piste ou bien une page de documentation à me faire lire (ou même une réponse si vous avez la solution, j'avoue ne pas vouloir cracher dessus  Smiley Tongue ) ?
D'avance merci
4 Replies
bertrandf
Active Member

Re: Requete lucene et associations

Pour restreindre le résultat de votre requête Lucene à des dossiers, je pense qu'il faut que vous ajoutiez un critère sur le TYPE folder :

TYPE:"{http://www.alfresco.org/model/content/1.0}folder"
ou
TYPE:"cm:folder"

Documentation sur Lucene
nabalou
Member II

Re: Requete lucene et associations

Bonjour BertrandF et merci de votre réaction,

Pour amener plus de précision, on s'est défini un type que l'on applique à certains dossiers. En voici sa définition qui fait apparaitre l'association. (sinon trop de lignes auraient été affichées et cela fait fuir les braves gens qui aident  Smiley Very Happy)

<type name="nab:article-folder">
    <title>Ma selection d'article</title>
    <parent>cm:folder</parent>
    <properties>…</properties>
    <associations>
        <association name="nab:articles">
            <title>Les articles selectionnes</title>
            <source>
                <mandatory>false</mandatory>
                <many>true</many>
            </source>
            <target>
                <class>nab:article-catalogue</class>
                <mandatory>false<mandatory>
                <many>false</many>
            </target>
        </association>
    </associations>
</type>
Le type target de l'association est "nab:article-catalogue". Voici une partie de sa description, je ne fais apparaitre ici que la propriete "categorie" :
<type name="nab:article-catalogue">
    <title>Articles du catalogue</title>
    <parent>cm:folder</parent>
    <properties>
        <property name="nab:categorie">
            <title>Categorie d'article</title>
            <type>d:text</type>
            <mandatory>true</mandatory>
        </property>
    </properties>
</type>
De cette manière, notre nab:article-folder est un genre de panier. Je voulais savoir s'il était possible avec lucene de faire une requête qui me récupère tous les paniers qui ont un article dont la catégorie est "Chaussettes" (par exemple).
Elle commencerait forcément par:
TYPE:"nab:article-folder" AND (…)
C'est le "…" qui me gène  Smiley Very Happy
Récupérer tous les paniers est chose facile: on ne met que la condition du TYPE et le tour est joué, mais là… je ne sais même pas s'il est possible de jouer de cette manière avec Lucene. Un peu à la façon SQL-imbriqué.

Dans tous les cas, merci de l'aide que vous me fournissez, la page du wiki sur la partie lucene est plus complète que celle présente dans le Guide du Developpeur. Elle me sera d'une aide précieuse pour la suite.

Cordialement.
rivarola
Active Member

Re: Requete lucene et associations

Bonjour,

A ma connaissance ce n'est pas possible en une seule requête Lucene aujourd'hui dans Alfresco. C'est une demande d'évolution qui a déjà été formulée (voir entre autres : https://issues.alfresco.com/jira/browse/ARCHIVE-376).
Cependant il y a peut-être moyen de "bricoler" en faisant de cette association une "child-association" secondaire, car les child-associations sont indexées dans Lucene (voir le Field "PARENT"). Un document aurait alors un "primary parent" qui est l'espace qui ne contient + n parents secondaires qui sont les paniers.
nabalou
Member II

Re: Requete lucene et associations

Merci pour cette réponse,
Je m'en vais de ce pas voir s'il est possible de faire en sorte que ce soit l'article de type chaussette qui soit le parent du panier. Avec cela je pourrais demander à Lucene de me récupérer tous mes nab:article-folder qui ont pour parent une chaussette (que je recupèrerais dans une premiere requete lucene).
Je me renseigne sur la volumétrie de mes "chaussettes" car le temps de recherche risque d'être très long si j'ai énormément de "chaussettes".
L'idée serait de:
  1. Recuperation de toutes les chaussettes afin d'avoir leur id (afin de renseigner le PARENT)
  2. Faire mon script avec un: 
    TYPE:"nab:article-folder" AND (PARENT:"id1" PARENT:"id2" … )
Ce qui n'est qu'un moyen de contournement mais à défaut, cela suffira Smiley Happy

Encore merci pour ces infos