Hi All,

Given the following two documents:
<doc>
 <a>
  <name>Bob</name> 
 <b>
  <name>Jim</name> 
  </b>
 </a>
</doc>

<doc>
 <a>
  <name>Jim</name> 
 <b>
  <name>Bob</name> 
  </b>
 </a>
</doc>>

The following returns just the first document: fn:doc()[./doc/a/name =
"Bob"]

I'd like to be able to get the same result using cts:query.
Specifying the exact elements to search using the cts:element-query and
cts:element-word-query as below, matches both documents when I would
like only the first to match.

let $q :=
<q><cts:element-query>
<cts:element>doc</cts:element>
<cts:element-query>
<cts:element>a</cts:element>
<cts:element-word-query>
<cts:element>name</cts:element>
<cts:text xml:lang="en">Bob</cts:text>
</cts:element-word-query>
</cts:element-query>
</cts:element-query></q>

return search:resolve($q/element())

==>

<search:response total="2" start="1" page-length="10"
xmlns:search="http://marklogic.com/appservices/search";>
 <search:result index="1" uri="/bobtest" path="fn:doc("/bobtest")"
score="56" confidence="0.491559" fitness="0.651473">
 <search:snippet>
 <search:match path="fn:doc("/bobtest")/doc/a/name">
  <search:highlight>Bob</search:highlight> 
  </search:match>
  </search:snippet>
  </search:result>
 <search:result index="2" uri="/bobtest2" path="fn:doc("/bobtest2")"
score="56" confidence="0.491559" fitness="0.651473">
 <search:snippet>
 <search:match path="fn:doc("/bobtest2")/doc/a/b/name">
  <search:highlight>Bob</search:highlight> 
  </search:match>
  </search:snippet>
  </search:result>
 <search:metrics>
  <search:query-resolution-time>PT0.094S</search:query-resolution-time> 
  <search:facet-resolution-time>PT0S</search:facet-resolution-time> 
  <search:snippet-resolution-time>PT0S</search:snippet-resolution-time> 
  <search:total-time>PT0.094S</search:total-time> 
  </search:metrics>
  </search:response>

The API docs for cts:element-word-query state:
"Returns a query matching elements by name with text content containing
a given phrase. Searches only through immediate text node children of
the specified element as well as any text node children of child
elements defined in the Admin Interface as element-word-query-throughs
or phrase-throughs; does not search through any other children of the
specified element."

No query or phrase throughs have been configured.  Is my query incorrect
for what I'm trying to accomplish? Thanks.

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

Reply via email to