Une base de données correctement configurée, une Xquery proprement écrite, tout porte croire qu’il y a un bug …

Pour déclarer un Path Range Index dans votre base MarkLogic, c’est assez simple :

  • Déclarer les namespaces de votre xpath (s’il y en a) dans la page « path namespaces » de votre base de données (Administration MarkLogic)
  • Déclarer votre Path Range Index dans la page « range path indexes » de votre base de données (Administration MarkLogic)

Cela suffit si vous utilisez la librairie « cts » de MarkLogic. Exemple d’utilisation : la fonction cts:path-range-query().
Par contre, si vous utilisez l’API search avec votre index (exemples ci-dessous), le serveur vous retourne l’erreur suivante :

[1.0-ml] XDMP-UNBPRFX: (err:XPST0081) Prefix my has no namespace binding

Exemples d’utilisation d’un Path Range Index avec l’API search :

search:estimate (
    <cts:path-range-query operator=« = »>
        <cts:path xmlns:my=« http://my_namespace »>/my:root/my:elt</cts:path>
        <cts:value xsi:type=« xs:string » xmlns:xsi=« http://www.w3.org/2001/XMLSchema-instance »>hello</cts:value>
     </cts:path-range-query>
)
search:search (
    « hello » ,
    <options xmlns=« http://marklogic.com/appservices/search »>
        <constraint name=« field »>
            <range type=« xs:string »>
                <path-index xmlns:my=« http://my_namespace »>/my:root/my:elt</path-index>
            </range>
        </constraint>
    </options>
)

En fait, il y a deux endroits où il faut déclarer les namespaces :

  • Au niveau de l’administration de la base de données (Administration MarkLogic) comme dit au début de l’article : Cela permet d’indéxer les données à chaque ajout / modification de document.
  • Au niveau de l’administration des Groupes / App Serveurs (Administration MarkLogic) : Ceux-ci sont utilisés lors de l’exécution des Xquery. Et du coup ils évitent l’erreur décrite plus haut.

L’architecture MarkLogic est prévue pour qu’on puisse séparer la couche applicative de la couche de données. C’est pourquoi cette définition de namespace doit se faire aux 2 endroits.

Découvrez nos préstations en régie ou au forfait

Audit, conseil, AMOA, AMOE, bases de données XML, solutions éditoriales, sites Responsive Web Design, ...

Nous consulter !
Découvrir !

Archives

Étiquettes

Mots clés