Great information, John and Mike. Thank you! -Brent
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Blakeley Sent: Friday, November 04, 2011 10:46 AM To: General MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] How to sort search results, then page? Right, and you can read about that at http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/xml/performance/order_by.xml This tutorial might help too: http://developer.marklogic.com/learn/2006-09-paginated-search Any new application should consider using the search API, which can handle sorting for you: http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/xml/search-dev-guide/search-api.xml%2330002 -- Mike On 4 Nov 2011, at 07:31 , John Zhong wrote: > Hi Brent, > > There are some tips about the order by optimization in the document > performance.pdf, chapter 4.0 Optimizing Order By Expressions With Range > Indexes, which is good to know. > > Best Regards, > John > > On Fri, Nov 4, 2011 at 10:06 PM, Brent Hartwig <[email protected]> wrote: > Good morning, > > > > I am trying to understand how to sort within cts:search(), before applying > the paging parameters. The code below only sorts the subset returned by > cts:search()[$start to $end]. Is this what collations are for? Do > collations require range indexes? Would search:search() make this easier? > > > > The default sort will be against > $node/rdf:Description/dcterms:identifier/oxdc:doi/rdf:value; but, the > application is required to allow the users to sort by any column's values > (other elements). Those sorts also need to apply to all results, rather than > only those on the current page. > > > > Thank you in advance. > > > > return > <list start="{$start}" end="{$end}" > total="{xdmp:estimate(cts:search(/rdf:RDF, $recordQuery, 'unfiltered'))}"> > { > (: TODO: Order all results by DOI then return $start to $end :) > for $node in cts:search(/rdf:RDF, $recordQuery, 'unfiltered')[$start to > $end] > order by $node/rdf:Description/dcterms:identifier/oxdc:doi/rdf:value > return > <item> > > <doi>{$node/rdf:Description/dcterms:identifier/oxdc:doi/rdf:value/text()}</doi> > <title>{$node/rdf:Description/dcterms:title/text()}</title> > <products> > { > for $productCode in > $node/rdf:Description/oxdc:resourceIdentifiers/oxdc:productCode/text() return > <product>{$productCode}</product> > } > </products> > </item> > } > </list> > > > > -Brent > > > _______________________________________________ > 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 _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
