[Lucene] Recherche de documents dont 1 champ date est vide

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

[Lucene] Recherche de documents dont 1 champ date est vide

Bon voilà tout est dans le titre, j'essaye de faire une recherche Lucene au sein d'un javascript sur tous les documents dont un champ date est vide. Cette métadonnée fait partie d'un des aspects que j'ai créés.

J'ai essayé le paramètre suivant :
+@<prefix>\:<metadonne-date>:null
mais ça n'a pas l'air de fonctionner.

Est-ce qu'il existe un moyen de faire cela avec Lucene ?

Merci d'avance,

Christophe
3 Replies
pdubois
Active Member

Re: [Lucene] Recherche de documents dont 1 champ date est vide

Bonjour, pour ce genre choses, vous pouvez utiliser l'aspect "sys:incomplete" qui est géré automatiquement par Alfresco. 
Si dans votre modèle de données (valable pour types et aspects) vous avez une propriété qui est déclarée obligatoire.

Exemple:
      <property name="de:profname">
            <title>Name</title>
            <type>d:text</type>
            <mandatory enforced="false">true</mandatory>
      </property>

Remarque: @enforced true ==> la propiété devra être spécifiée à lors de la création du document. Si à l'intérieur du tag mandatory vous placez "true" et que la valeur n'a pas encore été spécifiée alors l'aspect sys:incomplete est ajouté au document.

Si toutes les valeurs des champs mandatory sont spécifées alors l'aspect sys:incomplete est retiré.


Voici un example de template qui exploite cela:

<#assign query="@cm\\:creator:${person.properties.userName} AND ASPECT:\"sys:incomplete\"">
<#assign rowcount=0>
<table>
   <tr style='background-color: #C6D8EB'>
      <td></td> 
      <td><b>Nom</b></td>
      <td></td>
      <td><b>Taille</b></td>
      <td><b>Date de modification</b></td>
      <td><b>Emplacement</b></td>
      <td><b>V&eacute;rrouill&eacute; par</b></td>
   </tr>
   <#list userhome.childrenByLuceneSearch[query] as child>
      <#if child.isDocument>
         <#if rowcount % 2 = 0><tr><#else><tr style='background-color: #DEE5EC'></#if>
            <td><a href="/alfresco${child.url}" target="new"><img src="/alfresco${child.icon16}" border=0></a></td>
            <td><a href="/alfresco${child.url}" target="new">${child.properties.name}</a></td>
            <td> <a href="/alfresco/navigate/showDocDetails/workspace/SpacesStore/${child.id}">
                <img src="/alfresco/images/icons/View_details.gif" border=0 alt="D&eacute;tails de '${child.properties.name}'" title="D&eacute;tails de '${child.properties.name}'"></a> </td>
            <td>${(child.size / 1000)?string("0.##")} KB</td>
            <td>${child.properties.modified?datetime}</td>
            <td>${child.displayPath}</td>
            <td> <#if child.isLocked>${child.properties.lockOwner}</#if></td>
         </tr>
         <#assign rowcount=rowcount+1>
      </#if>
   </#list>
</table>
rivarola
Active Member

Re: [Lucene] Recherche de documents dont 1 champ date est vide

Bonjour,

La solution à ton problème est de tester avec * :
@cm\:titled:*

permet de lister tous les noeuds qui ont une valeur pour l'attribut title.
Si on cherche les valeurs vides, on met NOT devant mais il faut en plus cibler les documents qui ont cette propriété. Par exemple, pour avoir tous les documents avec un titre vide :
TYPE:"cm:content" AND ASPECT:"cm:titled" AND NOT @cm\:title:* 

Tu trouveras aussi dans les forums anglais des références à ISNULL. Dans la version actuelle ça ne marche pas (bug ouvert sur JIRA).
christophes
Member II

Re: [Lucene] Recherche de documents dont 1 champ date est vide

Merci pour vos réponses.

Je viens de tester la seconde solution (qui a ma préférence car plus propre, je trouve) et ça a l'air de fonctionner correctement.