Danny, that's because the options are designed to be used with the search:* functions (which are a higher-level API) rather than with cts:search. Instead of calling cts:search(), you can call search:resolve() (which includes pagination and wrappers just like search:search) or search:resolve-nodes() (which just spits out the raw documents, like cts:search). Make sure you pass $OPTIONS into whichever call you decide to use.
Colleen Whitney MarkLogic Corporation Phone +1 650 655 2366 email [email protected] web www.marklogic.com This e-mail and any accompanying attachments are confidential. The information is intended solely for the use of the individual to whom it is addressed. Any review, disclosure, copying, distribution, or use of this e-mail communication by others is strictly prohibited. If you are not the intended recipient, please notify us immediately by returning this message to the sender and delete all copies. Thank you for your cooperation. ________________________________________ From: [email protected] [[email protected]] On Behalf Of Danny Sinang [[email protected]] Sent: Friday, October 19, 2012 7:01 AM To: general Subject: [MarkLogic Dev General] How to make cts:search honor "sort" operator in options Hello, cts:search() doesn't seem to be honoring the "sort" operator in my search options. When I run the query below, I get results, but they're not sorted by "dateCreated" at all. What am I missing ? Regards, Danny (: //////////////////////////////////////////////////////////////////////////////////////////////////////////// :) import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy"; declare variable $OPTIONS := <options xmlns="http://marklogic.com/appservices/search"> <search-option>filtered</search-option> <debug>false</debug> <term> <term-option>case-insensitive</term-option> <term-option>wildcarded</term-option> </term> <additional-query>{cts:collection-query("trustedPartnerLogs") } </additional-query> <constraint name="dateRange"> <custom facet="false"> <parse apply="trustedPartnerLog-date-range" ns="http://www.xplana.com/date-range-query" at="/date-range-query.xqy"/> </custom> </constraint> <operator name="sort"> <state name="date_created-asc"> <sort-order direction="ascending" type="xs:dateTime" collation=""> <element ns="" name="dateCreated"/> </sort-order> <sort-order> <score/> </sort-order> </state> <state name="date_created-desc"> <sort-order direction="descending" type="xs:dateTime" collation=""> <element ns="" name="dateCreated"/> </sort-order> <sort-order> <score/> </sort-order> </state> </operator> <return-metrics xmlns="http://marklogic.com/appservices/search">false</return-metrics> </options> ; let $searchQuery := '(dateRange:"2012-10-19T00:00:00.00000-05:00~2012-10-19T23:59:59.99999-05:00") AND (sort:date_created-desc)' let $cts-query := search:parse($searchQuery, $OPTIONS) let $count := xdmp:estimate(cts:search(fn:collection("trustedPartnerLogs"), cts:query($cts-query))) let $searchResults := cts:search(fn:collection("trustedPartnerLogs"), cts:query($cts-query)) return $searchResults _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
