Another thought on this:

In general, when your search is not at a fragment root, index resolution will 
be less accurate.

So if you set a fragment root on the data element, that would also give you 
accurate unfiltered results here.  If you really did always search at that 
level, then a fragment root might make sense.

-Danny

From: [email protected] 
[mailto:[email protected]] On Behalf Of Danny Sokolsky
Sent: Wednesday, May 04, 2011 1:13 PM
To: General MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] Problem with searchable-expression and 
unfiltered search options

Hi Abhishek,

The problem is that MarkLogic does not resolve that query directly from the 
indexes.  That is why you have to do a filtered search in order to find that 
this is not a match.

One way around this is to use an element-query constraint on your data element. 
 This would restrict the query to within the scope of that element.  Here is an 
example of that (including the underlying cts:query at the end of the example, 
to help you understand how this works):

xquery version '1.0-ml';

xdmp:document-insert("/test.xml",
<test>
        <data>hello</data>
        <metadata>goodbye</metadata>
</test>);

import module namespace search = "http://marklogic.com/appservices/search";
    at "/MarkLogic/appservices/search/search.xqy";

let $options := <options xmlns="http://marklogic.com/appservices/search";>
      <searchable-expression>/test/data</searchable-expression>
      <constraint name="data">
        <element-query ns="" name="data" />
      </constraint>
      <search-option>unfiltered</search-option>
      <debug>true</debug>
</options>
return
search:search("data:goodbye", $options, 1,  10);

xdmp:estimate(cts:search(doc("/test.xml")/test/data,
  cts:element-query(xs:QName("data"), "goodbye")))

You will see that both queries find 0 matches, which is correct.

Hope that helps,
-Danny



From: [email protected] 
[mailto:[email protected]] On Behalf Of Abhishek53 S
Sent: Wednesday, May 04, 2011 3:16 AM
To: General MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] Problem with searchable-expression and 
unfiltered search options


Hi All

Can I restrict my free text search to a part of the document?

Consider my document is of the following structure. I restrict my search to the 
/test/data. I use search:search API and provide the XPATH in the 
<searchable-expression> option. I am using unfiltered search for better 
performance. Marklogic is returning if the free text is matches within metadata 
tag also.
If I am using filtered search option the marklogic search is limited to the 
data tag only. Please provide some suggestion to limit the search with 
unfiltered search only.

Content

<test>
        <data></data>
        <metadata></metadata>
</test>


Query

let $options := <options xmlns="http://marklogic.com/appservices/search";>
      <searchable-expression>/test/data</searchable-expression>
        <search-option>unfiltered</search-option>
</options>
return
search:search("free text", $options, 1,  10)

Thanks & Regards
Abhishek Srivastav

Assistant Systems Engineer
Tata Consultancy Services
Plot  B-1, Block EP & GP, Sector 5
Salt Lake Electronics Complex,
Kolkata - 700 091,West Bengal
India
Cell:- +91-9883389968
Mailto: [email protected]
Website: http://www.tcs.com<http://www.tcs.com/>
____________________________________________
Experience certainty.        IT Services
                       Business Solutions
                       Outsourcing
____________________________________________

=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to