Hi Basavaraj, Did you try something like following , I have formed structured query as third param for the given scenario.
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy"; let $searchQ := <search:query xmlns:search="http://marklogic.com/appservices/search"> <search:and-query> <search:term-query> <search:text>abc</search:text> </search:term-query> <search:collection-query> <search:uri>test1</search:uri> </search:collection-query> </search:and-query> </search:query> let $options := <options xmlns="http://marklogic.com/appservices/search"> <values name="example"> <range type="xs:int"> <element ns="" name="size"/> </range> <aggregate apply="max"/> </values> <search:additional-query>{$searchQ}</search:additional-query> </options> return search:values("example", $options,$searchQ) Thanks and regards Raja >>> From: [email protected] [mailto:[email protected]] On Behalf Of Basavaraj Kalloli Sent: Monday, July 20, 2015 5:23 PM To: MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] Aggregate functions in search:search Hi Geert, Thanks for the response so we are back to using search:values. For eg: cts:and-query((cts:word-query("some word"), cts:collection-query("some collection"))) search:values takes third parameter as a structured query i.e search:query https://docs.marklogic.com/search:parse But we have a cts:and-query so we are not sure how to convert this to a structured query. We have tried search:parse but it doesnt work. On Mon, Jul 20, 2015 at 2:40 PM, Geert Josten <[email protected]<mailto:[email protected]>> wrote: Hi Basavaraj, I’m afraid the documentation is a bit misleading. Your observation is correct, search:search ignores settings like values and tuples, they are only interpreted by search:values. Similarly suggestion sources are only interpreted by search:suggest. This makes it easier to have all search related options in one file, and share them among multiple functions. Particularly useful in REST api.. Cheers, Geert From: <[email protected]<mailto:[email protected]>> on behalf of Basavaraj Kalloli <[email protected]<mailto:[email protected]>> Reply-To: MarkLogic Developer Discussion <[email protected]<mailto:[email protected]>> Date: Monday, July 20, 2015 at 10:57 AM To: MarkLogic Developer Discussion <[email protected]<mailto:[email protected]>> Subject: [MarkLogic Dev General] Aggregate functions in search:search We need to calculate max values of two nodes for a given search query. From MarkLogic documentation we could see that we could achieve this using values in the options node of search:search. Example below: We have 2 documents: <document> <name>abc</name> <size>12</size></document><document> <name>abc</name> <size>4</size></document> We tried to find the max/min using search:search as below: xquery version "1.0-ml"; declare namespace html = "http://www.w3.org/1999/xhtml"; 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"> <values name="example"> <range type="xs:int"> <element ns="" name="size"/> </range> <aggregate apply="max"/> </values> </options>; search:search("abc", $options) this does not return values-response node which this documentation claims: http://docs.marklogic.com/search:search#opt-values If we use search:values as below then it returns values-response: xquery version "1.0-ml"; declare namespace html = "http://www.w3.org/1999/xhtml"; 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"> <values name="example"> <range type="xs:int"> <element ns="" name="size"/> </range> <aggregate apply="max"/> </values> </options>; search:values("example", $options) Output: <search:values-response name="example" type="xs:int" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:search="http://marklogic.com/appservices/search"> <search:distinct-value frequency="1">4</search:distinct-value> <search:distinct-value frequency="1">12</search:distinct-value> <search:aggregate-result name="max">12</search:aggregate-result> <metrics xmlns="http://marklogic.com/appservices/search"> <values-resolution-time>PT0.001927S</values-resolution-time> <aggregate-resolution-time>PT0.00242S</aggregate-resolution-time> <total-time>PT0.005973S</total-time> </metrics> </search:values-response> Theoretically this should work with search:search as well but somehow it completely ignores values node. Are we missing something obvious here or some other config is needed? _______________________________________________ General mailing list [email protected]<mailto:[email protected]> Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
