Hi Will,

The problem is that the citation query part doesn't match the fragments
selected by your searchable path, because - as you rightly state - the
citations are in different fragments than your docs . You can cross
fragment 'borders' using cts:document-fragment-query
(http://developer.marklogic.com/pubs/5.0/apidocs/cts-query.html#cts:docume
nt-fragment-query), but that may result in too tolerant results as I
suspect it goes wider than your //doc search path.

Anyhow, you can add cts:document-fragment-query, with a nested
cts:element-word-query or else, as an additional-query to search:search..

Kind regards,
Geert

-----Oorspronkelijk bericht-----
Van: [email protected]
[mailto:[email protected]] Namens Will Thompson
Verzonden: donderdag 12 januari 2012 21:32
Aan: General MarkLogic Developer Discussion
Onderwerp: [MarkLogic Dev General] Range query not returning all
fragments?

Hi folks,

I think I have run into a bit of an edge case, and I am struggling to find
a complete solution in ML 5. Using Search API I am trying to provie the
following, with (reasonably) accurate facet and result counts:

1. Search //doc for terms
2. Search //citation for terms
3. Search //doc ancestors of <citation> meeting certain criteria

The content looks like:

<root>
<doc>
<p>Some paragraph text. <citation type="type">Some citation
info</citation></p>
<p>...</p>
</doc>
...
</root>

I created a fragment roots on <doc> and <citation> to satisfy 1 and 2. The
problem that searching for one fragment type with a query for a descendant
fragment type breaks a search of type 3. For example:

cts:search(//doc,
cts:element-attribute-range-query(Qname("","citation"),QName("","type"),"=
","some-type"))

What I have discovered is that although there are now both doc *and*
citation fragments matching this range query, ML only returns citation
fragments, which get nulled out in index resolution (I assume) and search
returns 0 results. Removing the fragment root for citation, the range
query returns doc fragments, and search returns the correct results.
However, without the citation fragments, a search over //citation will
return inaccurate result and facet counts, since they will be calculated
based on its ancestor fragments.

So I don't know how to satisfy both 2 and 3. Our content model and search
requirements do not seem very exotic. Intuitively, it seems like the query
should return all of the matching doc and citation fragments instead of
assuming I want only citation, especially that assumption may be different
from what is defined in the xpath expression. But it appears to be by
design, and I am stumped at a workaround.

Is there another way to approach this that I have not considered?

Best regards,

Will


_______________________________________________
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