Note that there are some explanatory texts on larger screens.

plurals
  1. POMarklogic Wrong count and Facet result Xquery
    primarykey
    data
    text
    <p>Calling <code>search:search</code> doesn't return expected facet result counts. Below are two example files and the code I used.</p> <p>Page1.xml</p> <pre><code>&lt;pages xmlns="http://marklogic.com/docs"&gt; &lt;page&gt; &lt;elementNode&gt;data1&lt;/elementNode&gt; &lt;textNode&gt;text1&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data2&lt;/elementNode&gt; &lt;textNode&gt;text2&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data3&lt;/elementNode&gt; &lt;textNode&gt;text3&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data4&lt;/elementNode&gt; &lt;textNode&gt;text4&lt;/textNode&gt; &lt;/page&gt; &lt;/pages&gt; </code></pre> <p>Page2.xml </p> <pre><code>&lt;pages xmlns="http://marklogic.com/docs"&gt; &lt;page&gt; &lt;elementNode&gt;data5&lt;/elementNode&gt; &lt;textNode&gt;text5&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data6&lt;/elementNode&gt; &lt;textNode&gt;text6&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data7&lt;/elementNode&gt; &lt;textNode&gt;text7&lt;/textNode&gt; &lt;/page&gt; &lt;page&gt; &lt;elementNode&gt;data8&lt;/elementNode&gt; &lt;textNode&gt;text8&lt;/textNode&gt; &lt;/page&gt; &lt;/pages&gt; </code></pre> <p>Also I have created an element range index on <code>&lt;elementNode&gt;</code>. Now I executed following XQuery with searchText "<strong>text1</strong>" </p> <pre><code>xquery version "1.0-ml"; declare namespace html = "http://www.w3.org/1999/xhtml"; declare namespace ts= "http://marklogic.com/docs"; import module namespace search ="http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy"; declare variable $options := &lt;options xmlns="http://marklogic.com/appservices/search"&gt; &lt;searchable-expression xmlns:ex="http://marklogic.com/docs"&gt;//ex:page&lt;/searchable-expression&gt; &lt;grammar&gt; &lt;starter strength="30" apply="grouping" delimiter=")"&gt;(&lt;/starter&gt; &lt;starter strength="40" apply="prefix" element="cts:not-query"&gt;NOT&lt;/starter&gt; &lt;joiner strength="10" apply="infix" element="cts:or-query" tokenize="word"&gt;OR&lt;/joiner&gt; &lt;joiner strength="20" apply="infix" element="cts:and-query" tokenize="word"&gt;AND&lt;/joiner&gt; &lt;joiner strength="50" apply="constraint"&gt;:&lt;/joiner&gt; &lt;/grammar&gt; &lt;constraint name="elementNode"&gt; &lt;range collation="http://marklogic.com/collation/" type="xs:string"&gt; &lt;facet-option&gt;limit=1000&lt;/facet-option&gt; &lt;element ns="http://marklogic.com/docs" name="elementNode"/&gt; &lt;searchable-expression xmlns:ex="http://marklogic.com/clover/docs-xml"&gt;//ex:elementNode&lt;/searchable-expression&gt; &lt;/range&gt; &lt;/constraint&gt; &lt;/options&gt;; let $searchResult := search:search("text1", $options) return $searchResult </code></pre> <p>Which produces this result:</p> <pre><code>&lt;search:response xmlns="" xmlns:search="http://marklogic.com/appservices/search"&gt; &lt;search:result index="1" uri="Page1.xml" path="fn:doc(&amp;quot;Page1.xml&amp;quot;)/*:pages/*:page[1]"&gt; &lt;search:snippet&gt; &lt;search:match path="fn:doc(&amp;quot;Page1.xml&amp;quot;)/*:pages/*:page[1]/*:textNode"&gt; &lt;search:highlight&gt;text1&lt;/search:highlight&gt; &lt;/search:match&gt; &lt;/search:snippet&gt; &lt;/search:result&gt; &lt;search:facet name="elementNode"&gt; &lt;search:facet-value name="data1" count="1"&gt;data1&lt;/search:facet-value&gt; &lt;search:facet-value name="data2" count="1"&gt;data2&lt;/search:facet-value&gt; &lt;search:facet-value name="data3" count="1"&gt;data3&lt;/search:facet-value&gt; &lt;search:facet-value name="data4" count="1"&gt;data4&lt;/search:facet-value&gt; &lt;/search:facet&gt; &lt;/search:response&gt; </code></pre> <p>Now I'm seeing a problem in <code>facet-result</code>. It should return only one facet value i.e. <strong>data1</strong> from <strong>page1</strong> since only <strong>page1</strong> has the desired search expression "<strong>text1</strong>". Instead <code>facet-result</code> giving me result of all textNode values from the whole document. Please help me -- How we can restrict this? Also, count is giving me for whole document but what I want is page count match.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload