[MarkLogic Dev General] Search results puzzle
Jeni Tennison
jeni at jenitennison.com
Sat Dec 11 13:26:23 PST 2010
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
More information about the General
mailing list