2016-04-01 11 views
5

mio file XML viene con la strutturaindice di gamma sul nodo contenuto misto a esistere db

<root> 
    <compound>abc<parts>a b c</parts></compound> 
    <compound>xyz<parts>x y z</parts></compound> 
</root> 

ho creato un indice di gamma su

<range> 
    <create qname="compound" type="xs:string"/> 
</range> 

mi aspettavo i termini di indice sono abcabc e xyzxz ma ho trovato abc e xyz sotto il collegamento indice nella finestra di monitoraggio e di profilazione. E anche la stringa di ricerca

//compound[.="abca b c"] giving 0 results. 

Può uno aiuto nella creazione di indice su l'intero contenuto del composto come su abcabc, xyzxyz così via ..

Grazie

sony

risposta

0

In xquery, è necessario utilizzare la funzione data() per restituire tutto e discendenti o i valori degli elementi secondari. Così, per verificare se i valori dell'elemento compound possono essere restituiti è possibile utilizzare il seguente:

//compound/data()[.="abca b c"] 
+0

ma vuol utilizzare l'indice creato sul nodo

+0

puoi provare! La documentazione marklogic per la funzione fn: data(): https://docs.marklogic.com/fn:data –

+0

Non ha funzionato per esistere db –

0
nested="yes" attribute solved the problem. 

ho cambiato l'indice di intervallo per

<range> 
    <create qname="compound" type="xs:string" nested="yes" /> 
</range> 
Problemi correlati