You can xpath down the results in JavaScript. In your case, you end up
returning the whole document anyway I think because you are walking up the tree
from //word.
This is not quite what you want to do, but it is similar (and requires a range
index on concepts/@year)
var res = new Array();
for (var x of cts.search(cts.elementWordQuery(xs.QName("word"),
"tenant for life", ["exact"]),
cts.indexOrder(
cts.elementAttributeReference(
xs.QName("concepts"), xs.QName("year"))))) {
res.push(x.xpath(".//word"));
};
res;
-Danny
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Michael Blakeley
Sent: Tuesday, March 03, 2015 12:46 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] cts.search v cts:search
Just guessing, but it might be pretty difficult to allow searchable expression
arguments within a JavaScript evaluation environment. It might mean extending
JavaScript syntax, or passing in the searchable expression as a string.
Speaking of strings, one workaround would be to do that bit in XQuery and call
the XQuery from JavaScript. You could pass in a string that holds the
searchable expression, and use that to build a cts:search expression, then call
xdmp:value.
But if that sounds familiar, maybe it's because that's pretty much what
search:resolve-nodes already does. You should be able to require() the search
API module into your server-side JavaScript code and call it from there.
-- Mike
> On 3 Mar 2015, at 11:56 , Steiner, David J. (LNG-DAY)
> <[email protected]> wrote:
>
> I’m trying to implement a search in javascript. In xquery, with cts:search
> you can specify an element to be searched and returned, such as:
> cts:search(//element.
>
> The javascript cts.search doesn’t seem to have this ability. Is there a way
> to affect this in javascript? I really don’t want the whole doc coming back,
> just the element. Yes, the element is a fragment.
>
> Here’s the XQuery I’m trying to replicate in javascript:
>
> for $hit in cts:search(//word,
> cts:element-word-query(
> xs:QName("word"),
> "tenant for life",
> "exact"))
> order by fn:data($hit/../@year)
> return
>
> XML documents looks like this:
> <concepts year="1865">
> <word count="8">tenant for life</word> <word count="5">decree of
> court</word> <word count="4">fourth part</word> … </concepts>
>
>
> Thanks,
> David
>
>
> _______________________________________________
> 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