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: general-boun...@developer.marklogic.com [mailto:general-boun...@developer.marklogic.com] 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) > <david.j.stei...@elsevier.com> 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 > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general