Hi Erik, I am calculating the total number of results by counting the search:results. For the search facets - the count attribute for each search:facet-value is used, which is not in sync with the search-results count. What could I do create facets of only the filtered search results.
Thanks Shruti Kapoor On Tue, Jan 13, 2015 at 8:44 PM, Erik Hennum <erik.hen...@marklogic.com> wrote: > Hi, Shruti: > > In general, the total is an estimate based on the indexes which will be > exactly accurate only if the indexes are turned so the search can run > unfiltered. [1] > > To generate an accurate count for a filtered search, the Search API would > have to retrieve and count every document, which would not scale. > > Can you expand on how you're using the total? You may be able to solve > the problem in other ways. For instance, you can terminate paging on the > first page with fewer than page-length results. > > > Erik Hennum > > [1] The exception is that, starting in 8.0, the Search API calculates the > total on the last page based on the number of documents paged. > > > ------------------------------ > *From:* general-boun...@developer.marklogic.com [ > general-boun...@developer.marklogic.com] on behalf of shruti kapoor [ > shrutikapoor....@gmail.com] > *Sent:* Tuesday, January 13, 2015 2:00 AM > *To:* MarkLogic Developer Discussion > *Subject:* Re: [MarkLogic Dev General] Exact match in search:search > implementation > > Hi > > Thanks Peter & David. However I have one more problem. > When I apply <search-option>filtered</search-option>, the total search > result count and the facet count do not match. How can I return the facet > count on the basis of the filtered search results? > > > > Thanks > Shruti Kapoor > > On Tue, Jan 6, 2015 at 3:48 PM, David Ennis <david.en...@hinttech.com> > wrote: > >> HI. >> >> Peter, you are correct in what was missing in the search. However, you >> are right in being confused about the search:qtext..... >> >> brace yourself.. >> >> Another query console gotcha... Using 'auto' formats it as html and >> removes the extra whitespace.. When viewed in raw format, your >> search:report reflects the double space and verifies your solution: >> >> Your example expanded to show search parse as well yields the following >> (expected) whitespace when viewed in raw format: >> >> xquery version "1.0-ml"; >> declare namespace host = "http://marklogic.com/xdmp/status/host"; >> import module namespace search = "http://marklogic.com/appservices/search >> " >> at "/MarkLogic/appservices/search/search.xqy"; >> >> let $options := <options xmlns="http://marklogic.com/appservices/search >> "> >> <term> >> <term-option>case-sensitive</term-option> >> <term-option>diacritic-sensitive</term-option> >> <term-option>punctuation-sensitive</term-option> >> <term-option>whitespace-sensitive</term-option> >> <term-option>unstemmed</term-option> >> <term-option>unwildcarded</term-option> >> </term> >> <debug>true</debug> >> <search-option>filtered</search-option> >> </options> >> >> return ( >> search:search('"Hello world"',$options), >> search:parse('"Hello world"',$options) >> ) >> >> <search:response snippet-format="snippet" total="0" start="1" >> page-length="10" xmlns:search="http://marklogic.com/appservices/search"> >> <search:qtext>"Hello world"</search:qtext> >> <search:report id="SEARCH-FLWOR">(cts:search(fn:collection(), >> cts:word-query("Hello world", >> ("case-sensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","unstemmed","unwildcarded","lang=en"), >> 1), ("filtered",cts:score-order("descending")), 1))[1 to 10]</search:report> >> <search:metrics> >> <search:query-resolution-time>PT0.00387S</search:query-resolution-time> >> <search:facet-resolution-time>PT0.00005S</search:facet-resolution-time> >> <search:snippet-resolution-time>PT0S</search:snippet-resolution-time> >> <search:total-time>PT0.018433S</search:total-time> >> </search:metrics> >> </search:response> >> <cts:word-query xmlns:cts="http://marklogic.com/cts"> >> <cts:text xml:lang="en">Hello world</cts:text> >> <cts:option>case-sensitive</cts:option> >> <cts:option>diacritic-sensitive</cts:option> >> <cts:option>punctuation-sensitive</cts:option> >> <cts:option>whitespace-sensitive</cts:option> >> <cts:option>unstemmed</cts:option> >> <cts:option>unwildcarded</cts:option> >> </cts:word-query> >> >> >> >> >> >> >> >> Kind Regards, >> David Ennis >> >> >> David Ennis >> *Content Engineer* >> >> [image: HintTech] <http://www.hinttech.com/> >> Mastering the value of content >> creative | technology | content >> >> Delftechpark 37i >> 2628 XJ Delft >> The Netherlands >> T: +31 88 268 25 00 >> M: +31 63 091 72 80 >> >> [image: http://www.hinttech.com] <http://www.hinttech.com> >> <https://twitter.com/HintTech> <http://www.facebook.com/HintTech> >> <http://www.linkedin.com/company/HintTech> >> >> On 6 January 2015 at 10:06, Peter Kester <peter.kes...@marklogic.com> >> wrote: >> >>> Hi Shruti, >>> >>> MarkLogic does what it is supposed to do. See below sample >>> >>> xquery version "1.0-ml"; >>> >>> xdmp:document-insert("/foo.xml", <foo>Hello world</foo>); >>> xdmp:document-insert("/foo2.xml", <foo>Hello world</foo>); >>> >>> xquery version "1.0-ml"; >>> declare namespace host = "http://marklogic.com/xdmp/status/host"; >>> import module namespace search = " >>> http://marklogic.com/appservices/search" >>> at "/MarkLogic/appservices/search/search.xqy"; >>> >>> let $options := <options xmlns="http://marklogic.com/appservices/search >>> "> >>> <term> >>> <term-option>case-sensitive</term-option> >>> <term-option>diacritic-sensitive</term-option> >>> <term-option>punctuation-sensitive</term-option> >>> <term-option>whitespace-sensitive</term-option> >>> <term-option>unstemmed</term-option> >>> <term-option>unwildcarded</term-option> >>> </term> >>> <debug>true</debug> >>> <search-option>filtered</search-option> >>> </options> >>> >>> return search:search('"Hello world"',$options) >>> >>> This will give you: >>> <search:response snippet-format="snippet" total="1" start="1" >>> page-length="10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" >>> xmlns:search="http://marklogic.com/appservices/search"> >>> <search:result index="1" uri="/foo.xml" path="fn:doc("/foo.xml")" score >>> ="47104" confidence="0.5532626" fitness="0.6769772"> >>> <search:snippet> >>> <search:match path="fn:doc("/foo.xml")/foo"> >>> <search:highlight> >>> Hello world >>> </search:highlight> >>> </search:match> >>> </search:snippet> >>> </search:result> >>> <search:qtext> >>> "Hello world" >>> </search:qtext> >>> <search:report id="SEARCH-FLWOR"> >>> (cts:search(fn:collection(), cts:word-query("Hello world", >>> ("case-sensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","unstemmed","unwildcarded","lang=en"), >>> 1), ("filtered"), 1))[1 to 10] >>> </search:report> >>> <search:metrics> >>> <search:query-resolution-time> >>> PT0.004736S >>> </search:query-resolution-time> >>> <search:facet-resolution-time> >>> PT0.000051S >>> </search:facet-resolution-time> >>> <search:snippet-resolution-time> >>> PT0.000603S >>> </search:snippet-resolution-time> >>> <search:total-time> >>> PT0.021619S >>> </search:total-time> >>> </search:metrics> >>> </search:response> >>> >>> As you can see it returns the correct document foo.xml and not >>> foo2.xml. The difference is that you also need to specify unfiltered in the >>> options section. >>> I’m not sure why the double spaces are not reflected in the search:qtext >>> or the cts:word-query in the search:report. >>> >>> Hope this helps. >>> >>> Peter >>> >>> >>> *Peter Kester* >>> Senior Consultant >>> peter.kes...@marklogic.com >>> >>> +31 611188543 >>> >>> http://nl.linkedin.com/in/peetkes/ >>> >>> [image: Description: Description: cid:image001.png@01CCB980.BB82DD90] >>> >>> [image: Description: Description: MarkLogic Corporation] >>> Graadt van Roggenweg, 328-334, 3531 AH Utrecht >>> http://www.marklogic.com/ >>> >>> New generation databases, you just need to think differently www. >>> nosqlfordummies.com <http://t.co/YKkJ0Wxseo> >>> >>> >>> >>> >> _______________________________________________ >> General mailing list >> General@developer.marklogic.com >> http://developer.marklogic.com/mailman/listinfo/general >> >> > > > -- > > Regards, > *Shruti Kapoor* > > *Software Engineer* > *Innodata India Pvt. Ltd.* > > 7th floor, Stellar IT Park, > > Sector 62, Noida, Uttar Pradesh 201309, India > Cell: (+91) 9990340628 > > Email: skapo...@innodata.com <http://www.anmsoft.com/> | Web: > www.innodata.com <http://www.anmsoft.com/> > > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general > > -- Regards, *Shruti Kapoor* *Software Engineer* *Innodata India Pvt. Ltd.* 7th floor, Stellar IT Park, Sector 62, Noida, Uttar Pradesh 201309, India Cell: (+91) 9990340628 Email: skapo...@innodata.com <http://www.anmsoft.com/> | Web: www.innodata.com <http://www.anmsoft.com/>
_______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general