Hi Ryan,


>From the top of my head I can think only of one other option, which I
haven’t tried myself yet. I recently noticed this <result> option (
http://community.marklogic.com/pubs/5.0/apidocs/Ext-6.html#xdmp:eval),
which should be used in combination with xdmp:spawn if I understand
correctly.



Kind regards,

Geert



*Van:* [email protected] [mailto:
[email protected]] *Namens *[email protected]
*Verzonden:* woensdag 23 mei 2012 18:59
*Aan:* [email protected]
*Onderwerp:* [MarkLogic Dev General] getting MarkLogic to execute functions
in parallel



I have a search function that calls other search functions that are
independent of each other. The master search function takes the results of
these sub-search functions and compiles and processes them according to
some rules.

I would like the sub-search functions to all execute in parallel at the
same time to reduce the response time of the call to the master search
function.

I tried using xdmp:http-post and xdmp:invoke both in for loops and also
without for loops.

for example:

*xdmp:http-post (for loop) does not execute in parallel:

let $sub-search-results :=
    for $sub-search in $sub-searches
    return xdmp:http-post($endpoint....)

let $subsearch-results :=
    <subsearch-results>
        {$sub-search-results}
    </subsearch-results>

return $sub-search-results


*xdmp:http-post (no for loop) DOES execute in parallel:

let $sub-search-result-1 := xdmp:http-post($endpoint....)
let $sub-search-result-2 := xdmp:http-post($endpoint....)
let $sub-search-result-3 := xdmp:http-post($endpoint....)
let $sub-search-result-4 := xdmp:http-post($endpoint....)

let $subsearch-results :=
    <subsearch-results>
        {$sub-search-result-1}
        {$sub-search-result-2}
        {$sub-search-result-3}
        {$sub-search-result-4}
    </subsearch-results>

return $sub-search-results


I tried similar approaches using xdmp:invoke (both with and without a for
loop) but neither would execute in parallel.

Does this sound right? I was expecting to be able to get parallel execution
in a for loop using xdmp:http-post (I even tried fn:unordered but it had
not effect). and I was expecting to get parallel execution using
xdmp:invoke somehow but I couldn't.

The http-post approach isn't too bad for my situation but it feels like a
little bit of a hack just to get parallel execution. Are there any other
ways?

thanks,
Ryan
_______________________________________________
General mailing list
[email protected]
http://community.marklogic.com/mailman/listinfo/general

Reply via email to