If the $p is ancillary to the results, why not just use one of these?
(
for $x at $p in cts:search(doc(), $cq2, 'unfiltered')/content/lookupInfo
order by string-length($x/searchPathEnc) descending
return <x><pos>{$p}</pos>{$x/searchPathEnc}</x>
)[1]
Or
subsequence(
for $x at $p in cts:search(doc(), $cq2, 'unfiltered')/content/lookupInfo
order by string-length($x/searchPathEnc) descending
return <x><pos>{$p}</pos>{$x/searchPathEnc}</x>,
1, 1)
-- Mike
On 31 Aug 2011, at 13:01 , Gary Larsen wrote:
> I’m also struggling with an order by problem today. What I need is the first
> of the sorted results from this query:
>
> for $x at $p in cts:search(doc(), $cq2,
> 'unfiltered')/content/lookupInfoorder by string-length($x/searchPathEnc)
> descending return
> <x><pos>{$p}</pos>{$x/searchPathEnc}</x>
>
> <x>
> <pos>2</pos>
>
> <searchPathEnc>%2Fcontent%2Fpackage%5B%40name%3D%27Demo%27%5D</searchPathEnc>
> </x>
> <x>
> <pos>1</pos>
> <searchPathEnc>%2Fcontent</searchPathEnc>
> </x>
>
> I would expect that the first result would have a position value of 1 but
> that’s not the case. Is there a way to determine (or get directly) the first
> of the ordered results?
>
> Sorry if this is just my lack of XQuery knowledge,
> gary
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general