Mike,

This is moderately efficient, so may work depending on your use case and the 
number of matching uris:

declare namespace functx = "http://www.functx.com";; 
declare function functx:substring-before-last-fslash($arg as xs:string?)  as 
xs:string? {

 let $dir := replace($arg, '^(.*)/.*', '$1')
 return if (ends-with($dir, "/")) then $dir else ()  (: if there is no / at 
all, the replace will have no effect, so check the terminating slash to ensure 
it is a directory :)
 
 } ;
 
 let $q := ... some query ...
 distinct-values(cts:uris("", (), $q) ! functx:substring-before-last-fslash(.))

Note the "!" operator is a shorthand for a for loop in ML 6. Note the function 
is based on functx, but has the "/" delimiter hard-coded.

Yours,
Damon
--
Damon Feldman
Sr. Principal Consultant, MarkLogic

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Michael Sokolov
Sent: Wednesday, January 16, 2013 10:38 PM
To: General Developer Discussion
Subject: [MarkLogic Dev General] directory facet?

Is there an efficient way to retrieve all the directories containing the 
documents matching a query, in the way that cts:words does for words?

-Mike


_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to