Rechercher des propriétés vides

Récemment, j’ai eu la nécessité de lister tous les documents pour lesquels une propriété n’était pas définie.
Je ne m’étais pas encore intéressé à la manière dont SOLR traitait ces cas, voici mon retour d’expérience avec Alfresco 4.0.d et les recherches « FTS-Alfresco ».

Dans la page du wiki Alfresco dédiée à la recherche, on peut lire :

ISNULL : Is the property null

On peut donc raisonnablement penser qu’une recherche :

ISNULL:"model:propriété"

retournera l’ensemble des objets pour lesquels la propriété n’est pas définie.

Cette recherche retournera les résultats attendus, pour peu que la propriété utilisée ne possède pas les critères d’indexation suivants :

<index enabled="true">
  <atomic>true</atomic>
  <stored>false</stored> 
  <tokenised>both</tokenised>
</index>

En effet, dans une telle situation, l’utilisation de ISNULL sera conforme aux attentes tant qu’aucune valeur n’a été définie pour la propriété; mais si une valeur est définie puis vidée (ou tout simplement si on définit une valeur vide), alors la propriété n’est plus « NULL ».
Si les mêmes opérations sont réalisées pour une propriété disposant d’une indexation standard, la propriété sera « NULL » qu’elle n’ait jamais été définie ou que sa valeur soit vide.
Bien que très lisible, l’opérateur ISNULL est donc à éviter.

Le meilleure façon que j’ai trouvée de traiter le sujet est de faire une recherche opposée.
La recherche

model:propriété:"*"

signifie : « Recherche tous les noeuds pour lesquels la propriété model:propriété contient quelque chose, peut importe cette chose »… si on la prend à l’envers on devrait avoir la signification « Recherche tous les noeuds pour lesquels la propriété model:propriété ne contient rien ».
Cette recherche s’écrit :

-model:propriété:"*"

Et la magie d’Alfresco et SOLR intervenant, nous obtenons les résultats attendus !

Cette entrée a été publiée dans Alfresco, Technique, avec comme mot(s)-clef(s) , , , . Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam