Hi Mike, et al,

Looking into this a little more, I'm still not sure how to create the query
for this approach.  I have a cts:search that looks like this:
        
cts:search(
        /ns:metadata,   
        cts:and-query((
                        cts:directory-query("/metadata/", "1"),
                cts:element-value-query(xs:QName("ns:status"), "New",
"exact"),
                cts:element-value-query(xs:QName("ns:user"), "Ed", "exact"),
                        cts:element-value-query(xs:QName("ns:doc-id"),
"1234", "exact")
        ))
)

Here are some questions:

1. How do I retain the expression part of the cts:search in the query?
2. How do I represent the query, merely by assigning the query to a
variable?  For example, would I do the following?

$query := cts:and-query((
                        cts:directory-query("/metadata/", "1"),
                cts:element-value-query(xs:QName("ns:status"), "New",
"exact"),
                cts:element-value-query(xs:QName("ns:user"), "Ed", "exact"),
                        cts:element-value-query(xs:QName("ns:doc-id"),
"1234", "exact")
        ))

end plugging the $query variable into your example:

search:resolve-nodes(
        document { $query }/*, $options, $page-start, $page-size) ?

Also, is there a way to feed the resulting XML of a query into the
search:resolve-nodes function?  I end up having to join my results with
another document to obtain all of the desired columns.

Thanks again, Tim


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Michael
Blakeley
Sent: Wednesday, March 27, 2013 6:07 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] How to program the order by clause in
FLWOR?

If you already have code to generate a cts:query and format results, you
might prefer search:resolve-nodes. That way you won't have to change as much
code, but it will still replace your FLWOR expression to handle sorting and
pagination. You'll just have to construct a search:options node for the
sorting, and provide the pagination and cts:query. The query has to be XML,
which you can generate using easily.

search:resolve-nodes(
  document { $query }/*, $options, $page-start, $page-size)

http://docs.marklogic.com/search:resolve-nodes has more, and
http://docs.marklogic.com/search:search outlines the search options. Look
for '<sort-order>', like this example:

<sort-order type="xs:string" 
        collation="http://marklogic.com/collation/";
            direction="ascending">
  <element ns="my-namespace" name="my-element"/>
  <annotation>some user comment can go here</annotation> </sort-order>
<sort-order direction="ascending">
  <score/>
</sort-order>

-- Mike

On 27 Mar 2013, at 14:12 , "Tim" <[email protected]> wrote:

> Hi Mike,
> 
> True, plus I need to implement pagination.  It seems like the 
> search:search functionality is ideal, but I have a little bit of a
learning curve with it.
> I have looked at the documentation, but I'm wondering if there are any 
> examples available of transforming a cts:search into a search:search 
> function call?
> 
> Thanks again,
> 
> Tim
> 
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Michael 
> Blakeley
> Sent: Wednesday, March 27, 2013 5:04 PM
> To: MarkLogic Developer Discussion
> Subject: Re: [MarkLogic Dev General] How to program the order by 
> clause in FLWOR?
> 
> What I mean is that if you want to support N sort keys, each ascending 
> or descending, you'll need to enumerate 2N conditionals. With string 
> concatenation and xdmp:value you can support any number, with much 
> less code. And then if you want to support multiple dynamic sort keys 
> at the same time, things get ugly fast.
> 
> -- Mike
> 
> 
> 
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
> 

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to