2013-07-24 6 views
5

Sto tentando di eseguire una ricerca su un elemento specifico in modo da avere un'espressione ricercabile all'interno delle mie opzioni. Voglio anche ordinare i valori di questo elemento in modo da aver creato un indice di intervallo di elementi sull'elemento valore. Qui sono le mie opzioni di ricerca che rende spero che le cose chiare:API di ricerca MarkLogic - Come eseguire un ordinamento sullo stesso elemento dell'espressione ricercabile

<options xmlns="http://marklogic.com/appservices/search"> 
     <term> 
      <term-option>case-insensitive</term-option> 
     </term> 
     <debug>true</debug> 
     <searchable-expression>/summary/name/value</searchable-expression> 
     <sort-order type="xs:string" direction="ascending"> 
      <element ns="" name="value"/> 
      <annotation>options for search institutions by name</annotation> 
     </sort-order> 
</options> 

Il problema è che quando lo fa il genere si aggiunge un altro nodo valore (Tratto da ricerca: rapporto id = "SEARCH-FLWOR")

...order by xs:string(($result//value)[1]) ascending return $result)[1 to 50] 

Invece di:

...order by xs:string(($result)[1]) ascending return $result)[1 to 50] 

Come posso evitare che facendo questo? Non riesco a cambiare l'espressione ricercabile in quanto l'elemento "nome" ha un altro elemento figlio che non desidero cercare attraverso. Inoltre, non posso lasciare vuoto il nome dell'elemento di ordinamento o impostarlo sul nodo corrente. Sembra che sarebbe semplice, ma non ho trovato nulla per farlo funzionare.

L'aiuto sarebbe molto apprezzato.

risposta

4

È possibile utilizzare <name> come l'elemento di destinazione dell'espressione ricercabile, ma poi limitare la query a guardare solo all'interno <value> aggiungendo un <additional-query>:

<options xmlns="http://marklogic.com/appservices/search"> 
     <term> 
      <term-option>case-insensitive</term-option> 
     </term> 
     <debug>true</debug> 
     <searchable-expression>/summary/name</searchable-expression> 
     <additional-query> 
      <cts:element-query xmlns:cts="http://marklogic.com/cts"> 
      <cts:element>value</cts:element> 
      <cts:and-query/> 
      </cts:element-query> 
     </additional-query> 
     <sort-order type="xs:string" direction="ascending"> 
      <element ns="" name="value"/> 
      <annotation>options for search institutions by name</annotation> 
     </sort-order> 
</options> 
+0

Utilizzando un ulteriore-query sembra ottenere il lavoro fatto. Grazie per il suggerimento. – Francium123

Problemi correlati