Are the two sub-query matches in different fragments?  If they are, the XPath 
expression will cross fragment boundaries while the cts:search() won't by 
default.

You could wrap one of the cts:search sub-queries with 
cts:document-fragment-query() which essentially ask cts:search() to do the 
and-query across fragment boundaries, joining internally based on the URI.  
That might work for you.

It's a new feature so please make sure you have the latest version of the 
server.  Also, I don't have a lot of practice with it yet, so no guarantees 
this will help.  :)  And finally, queries run faster if all sub-query 
constraints are in the same fragment.

-jh-

On Dec 11, 2010, at 1:26 PM, Jeni Tennison wrote:

> Hi,
> 
> I have a problem using the cts:search() facility.
> 
> I am looking for documents that (a) contain a ukm:Year element whose 
> Value attribute is 1985 and (b) contain a leg:P1group element with a 
> RestrictExtent attribute whose value is 'E+W'.
> 
> If I do:
> 
> cts:search(
>   collection('best'),
>   cts:and-query((
>     cts:element-attribute-range-query(xs:QName("ukm:Year"), QName("", 
> "Value"), "=", 1985),
>     cts:element-attribute-value-query(xs:QName("leg:P1group"), 
> QName("", "RestrictExtent"), "E+W")
>   )),
>   'unfiltered'
> )/base-uri(.)
> 
> I get back a single document (1985 c. 12).
> 
> If I do what I think is the equivalent query:
> 
> cts:search(
>   collection('best'),
>   cts:element-attribute-value-query(xs:QName("leg:P1group"), QName("", 
> "RestrictExtent"), "E+W"),
>   'unfiltered'
> )[.//ukm:Year/@Value = 1985]/base-uri(.)
> 
> I get back two documents (1985 c. 12 and 1985 c. 67; actually multiple 
> copies of the second because it's an unfiltered search and the relevant 
> document contains several matching P1groups).
> 
> So two questions:
> 
> 1. Why is the first query not giving me back the same results as the 
> second query? Is this to do with fragments or something?
> 
> 2. What would be the most efficient way of performing this search while 
> retaining the accurate results given by the second of the above expressions?
> 
> Thank you,
> 
> Jeni
> 
> P.S. MarkLogic v. 4.1-7
> _______________________________________________
> 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