2017-06-12 27 views
0

對不起了很久的問題,不知道該如何解釋這以外我的問題..搜索:值不能工作時,結構化查詢有contraint

我有一個查詢

let $q := '(*) AND ((context:"KN"))' 

我的選擇

let $options := 
<options xmlns="http://marklogic.com/appservices/search"> 
<constraint name="context"> 
     <range type="xs:string" facet="true"> 
      <element name="context" ns="http://ir.abbvienet.com/content-repo/metadata"/> 
      <facet-option>frequency-order</facet-option> 
      <facet-option>descending</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> 
    <return-results>false</return-results> 
    <return-facets>true</return-facets> 
    <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> 
    <search-option>unfiltered</search-option> 
</options> 

當我做search:search($q, $options) 我得到以下結果

<search:facet name="gene" type="xs:string"> 
    <search:facet-value name="DMPK" count="846">DMPK</search:facet-value> 
    <search:facet-value name="TNF" count="323">TNF</search:facet-value> 
    <search:facet-value name="IL6" count="301">IL6</search:facet-value> 
    <search:facet-value name="PAGE4" count="297">PAGE4</search:facet-value> 
    <search:facet-value name="INS" count="296">INS</search:facet-value> 
    <search:facet-value name="PSD" count="291">PSD</search:facet-value> 
    <search:facet-value name="EGFR" count="280">EGFR</search:facet-value> 
    <search:facet-value name="PAGE3" count="271">PAGE3</search:facet-value> 
    <search:facet-value name="PAGE5" count="270">PAGE5</search:facet-value> 
    <search:facet-value name="CD4" count="268">CD4</search:facet-value> 
    </search:facet> 
    <search:qtext>(*) AND ((context:"KN"))</search:qtext> 

哪個是正確的,,現在我想用search:values得到的gene的小面。而我做了以下

let $valueOptions := 
    <options xmlns="http://marklogic.com/appservices/search"> 
    <values name="facet"> 
     <range type="xs:string" facet="true"> 
     <path-index>//Hit[@type='GENE']/@id</path-index> 
     </range> 
     <values-option>frequency-order</values-option> 
     <values-option>descending</values-option> 
    </values> 
    </options> 


return search:values('facet', $valueOptions, search:parse($q, $options, 'search:query'),(),(), 1, 10) 

我得到下面的結果

<search:values-response name="facet" type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:search="http://marklogic.com/appservices/search"> 
<search:distinct-value frequency="12528">EGFR</search:distinct-value> 
<search:distinct-value frequency="8305">ERBB2</search:distinct-value> 
<search:distinct-value frequency="7997">CD274</search:distinct-value> 
<search:distinct-value frequency="7771">PDCD1</search:distinct-value> 
<search:distinct-value frequency="7410">ALB</search:distinct-value> 
<search:distinct-value frequency="6910">CTLA4</search:distinct-value> 
<search:distinct-value frequency="6849">PARP1</search:distinct-value> 
<search:distinct-value frequency="6740">MET</search:distinct-value> 
<search:distinct-value frequency="6243">BTK</search:distinct-value> 
<search:distinct-value frequency="6234">TNF</search:distinct-value> 
<metrics xmlns="http://marklogic.com/appservices/search"> 
<values-resolution-time>PT0.021358S</values-resolution-time> 
<total-time>PT0.022609S</total-time> 
</metrics> 
</search:values-response> 

我注意到是search:values忽略了我搜索字符串中的約束,或者它沒有用正確的方式輸出search:parse ..

爲什麼輸出不一樣?我缺少的東西

回答

1

我假設你喂search:values具有相同$q作爲search:search,但你傳遞$valueOptions不具有約束定義爲context

values的定義添加到$options,並將其用於search:values

HTH!

+0

修復它。謝謝..我以某種方式假定'search:parse'已經在結構化查詢中具有約束信息 – Ravi