2016-08-25 3 views
3

У меня странная проблема, я делаю cts: uri и cts: search .. И мой cts: uris дает мне 7 результатов, где as cts: search дает только 3 результата.cts: uris и cts: поиск, возвращающий разные результаты

Не уверен, что я делаю неправильно, надеясь, что кто-то может указать мне, что я делаю неправильно. Я испробовал все возможности, которые я знаю :) .. следующий код, который я бег

xquery version "1.0-ml"; 
declare namespace html = "http://www.w3.org/1999/xhtml"; 
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy"; 

    let $q := '(Dermatolog*) AND ((context:KN)) AND ((gene:"STAT3") AND (indication:"Carcinoma")) AND ((uploadDate:"today")) AND (sort:date_desc)' 


    let $options := 
     <options xmlns="http://marklogic.com/appservices/search"> 
     <additional-query> 
      <cts:collection-query xmlns:cts="http://marklogic.com/cts"> 
       <cts:uri>http://abc/xyz/type/envelope</cts:uri> 
      </cts:collection-query> 
     </additional-query> 
     <operator name="sort"> 
      <state name="date_desc"> 
       <sort-order type="xs:dateTime" direction="descending"> 
        <field name="upload_date"/> 
       </sort-order> 
      </state> 
      <state name="date_asc"> 
       <sort-order type="xs:dateTime" direction="ascending"> 
        <field name="upload_date"/> 
       </sort-order> 
      </state> 
     </operator> 
     <constraint name="context"> 
      <range type="xs:string" facet="true"> 
       <element name="context" ns="http://abc/xyz/metadata"/> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
      </range> 
     </constraint> 
     <constraint name="type"> 
      <range type="xs:string" facet="true"> 
       <element name="type" ns="http://abc/xyz/metadata"/> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
      </range> 
     </constraint> 
     <constraint name="file-type"> 
      <range type="xs:string" facet="true"> 
       <element name="file-type" ns="http://abc/xyz/metadata"/> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
      </range> 
     </constraint> 
     <constraint name="drug"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='DRUG']/Name</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="compound"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='COMPOUNDS']/Name</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="species"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='SPECIES']/Name</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="company"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='COMPANY']/Name</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="indication"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='INDICATION']/Name</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="gene"> 
      <range type="xs:string" facet="true"> 
       <path-index>//Hit[@type='GENE']/@id</path-index> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
      </range> 
     </constraint> 
     <constraint name="uploadDate"> 
      <range type="xs:dateTime" facet="true"> 
       <computed-bucket lt="P1D" ge="P0D" anchor="start-of-day" name="today">Today</computed-bucket> 
       <computed-bucket lt="P0D" ge="-P1D" anchor="start-of-day" name="yesterday">Yesterday</computed-bucket> 
       <computed-bucket lt="-P1D" ge="-P15D" anchor="start-of-day" name="2-weeks">Last 2 Weeks</computed-bucket> 
       <computed-bucket lt="-P15D" ge="-P30D" anchor="start-of-day" name="month">A Month ago</computed-bucket> 
       <computed-bucket lt="-P30D" ge="-P365D" anchor="start-of-day" name="year">A Year ago</computed-bucket> 
       <computed-bucket name="older" lt="-P365D" anchor="start-of-day">Older</computed-bucket> 
       <facet-option>descending</facet-option> 
       <field name="upload_date"/> 
      </range> 
     </constraint> 
     <constraint name="author"> 
      <range type="xs:string" facet="true"> 
       <facet-option>frequency-order</facet-option> 
       <facet-option>descending</facet-option> 
       <facet-option>limit=10</facet-option> 
       <field name="author"/> 
      </range> 
     </constraint> 
     <term> 
      <term-option>case-insensitive</term-option> 
      <term-option>punctuation-insensitive</term-option> 
      <term-option>whitespace-insensitive</term-option> 
      <term-option>wildcarded</term-option> 
     </term> 
     <return-facets>true</return-facets> 
     <return-results>true</return-results> 
     <transform-results apply="empty-snippet"/> 
    </options> 


    return 
    (
     cts:uris("", ('document'), cts:query(search:parse($q, $options))), 
     cts:search(fn:doc(), cts:query(search:parse($q, $options))) 
    ) 

ответ

8

Это эффект отфильтрованных против нефильтрованных запросов. cts:uris может быть запущен нефильтрованным, что означает, что он использует только индексы и может возвращать ложные срабатывания в зависимости от ваших настроек индекса. cts:search фильтрует запросы по умолчанию, и вы должны указать unfiltered в параметре параметров.

Также обратите внимание, что большинство параметров, указанных в вашем <search:options> элемента являются НЕ применяются автоматически при использовании cts:search вместо search:resolve, в том числе <additional-query>.

+0

Это то же самое для огранки ?? – Ravi

+0

Да, это правильно. Все функции на основе лексики будут работать только без фильтрации. – wst

+0

Благодарим вас за разъяснение. Отфильтрованный против нефильтрованного всегда меня достает – Ravi

Смежные вопросы