2015-10-19 44 views
1

我想根据方面计数对结果进行排序。我该如何去搜索:搜索?在搜索的方面计数排序:搜索

截至目前,我使用这个查询 -

let $options := 
<options xmlns="http://marklogic.com/appservices/search"> 
    <return-metrics>false</return-metrics> 
    <return-facets>true</return-facets> 
    <return-results>false</return-results> 
    <additional-query>{cts:query($cts-query)}</additional-query> 
    <constraint name="decade"> 
    <range type="xs:dateTime" facet="true">   
     <bucket lt="2002-01-01T00:00:00Z" ge="2001-01-01T00:00:00Z" name="2001">2001</bucket> 
     <bucket lt="2003-01-01T00:00:00Z" ge="2002-01-01T00:00:00Z" name="2002">2002</bucket> 
     <bucket lt="2004-01-01T00:00:00Z" ge="2003-01-01T00:00:00Z" name="2003">2003</bucket> 
     <bucket ge="2004-01-01T00:00:00Z" name="2004">2004</bucket> 
     <facet-option>limit=10</facet-option> 
     <element ns="http://iddn.icis.com/ns/core" name="released-on"/> 
    </range> 
    </constraint> 
    <operator> 
    <state> 
     <sort-order direction="descending" type="xs:integer"> 
     <score/> 
     </sort-order> 
    </state> 
    </operator> 
</options> 

let $date-seq := search:search("*", $options) 
return $date-seq 

我想改变的选项,这样我可以通过小计数方面对结果进行排序。

回答

3

未与桶试过,但通常我想你最好加刻面选项“频次”和“降”:

<constraint name="decade"> 
    <range type="xs:dateTime" facet="true">   
    <bucket lt="2002-01-01T00:00:00Z" ge="2001-01-01T00:00:00Z" name="2001">2001</bucket> 
    <bucket lt="2003-01-01T00:00:00Z" ge="2002-01-01T00:00:00Z" name="2002">2002</bucket> 
    <bucket lt="2004-01-01T00:00:00Z" ge="2003-01-01T00:00:00Z" name="2003">2003</bucket> 
    <bucket ge="2004-01-01T00:00:00Z" name="2004">2004</bucket> 
    <facet-option>limit=10</facet-option> 
    <facet-option>frequency-order</facet-option> 
    <facet-option>descending</facet-option> 
    <element ns="http://iddn.icis.com/ns/core" name="released-on"/> 
    </range> 
</constraint> 
+0

我可以在其中加入排序的多层次?就像,对于第一级,我按频次排序,对于第二级,我想对方面名称进行排序。 –

+0

我不这么认为。订购的方面选项是“频率顺序”和“项目顺序”。 –

+0

谢谢戴夫。这不会有任何影响。我只能用这两个选项来做我想要做的。 –