Hi Geert,
If you have range indexes on elem/@att1 and elem/@att2, you might be able to do
some clever things. For example, you could quickly find the values that the 2
attributes share, then do a much more targeted search with those specific
values. You also might be able to do something similar with
cts:element-attribute-range-queries or with co-occurrences, although I cannot
picture what the code might look like to do that.
For the first thing, the idea is to get all the same values and iterate over
them creating and-queries for each value, something like (I have not run this,
so it likely has syntax and/or logic errors):
let $samevalues := cts:element-attribute-values(xs:QName("elem"),
xs:QName("att1")) = cts:element-attribute-values(xs:QName("elem"),
xs:QName("att2"))
return //elem[cts:contains(., cts:or-query((
for $x in $samevalues return
cts:and-query(( cts:element-attribute-value-query(xs:QName("elem"),
xs:QName("att1"), $x),
cts:element-attribute-value-query(xs:QName("elem"),
xs:QName("att1"), $x) )) )) )]
-Danny
________________________________________
From: [email protected]
[[email protected]] On Behalf Of Geert Josten
[[email protected]]
Sent: Sunday, February 12, 2012 1:16 AM
To: MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] Cts query for element attribute value
matching another attribute value?
I am trying to isolate some specific element with two attributes who's
values are equal. I know I can use an expression like doc()//elem[@att1 =
@att2], which is even fully searchable according to xdmp:plan, but I'd
prefer a cts:query, which I could pass into cts:element-attribute-values.
I need unique values, and I am trying to prevent using distinct-values on
the above XPath expression..
Any suggestions?
Kind regards,
Geert
drs. G.P.H. (Geert) Josten
Senior Developer
Dayon B.V.
Delftechpark 37b
2628 XJ Delft
T +31 (0)88 26 82 570
[email protected]
www.dayon.nl
De informatie - verzonden in of met dit e-mailbericht - is afkomstig van
Dayon BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan
dit bericht kunnen geen rechten worden ontleend.
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general