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