1

ファセット数に基づいて結果を並べ替えたい。search:search でそれを行うにはどうすればよいですか?

今のところ、私はこのクエリを使用しています-

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

オプションを変更して、ファセット結果をファセット数で並べ替えられるようにしたいと考えています。

4

1 に答える 1

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>
于 2015-10-19T12:38:44.610 に答える