2

私は検索用の Rest 拡張機能を作成しています。これは、JSON ネストされたドキュメントで検索する場所のパラメーターを受け取ります。カスタム制約を作成することでこれを行うことができ、このカスタム制約を使用して検索テキストを解析し、クエリを作成しました..

並べ替え順序についても同じことができますか? ちなみに、渡されたパラメーターに基づいて検索オプションの並べ替え順序を作成するということです..

例の1つで見た、次のことを行う場所

let $options :=
<search:options>
  <search:operator name="sort">
    <search:state name="relevance">
      <search:sort-order>
        <search:score/>
      </search:sort-order>
    </search:state>
    <search:state name="year">
      <search:sort-order direction="descending" type="xs:gYear"
            collation="">
        <search:attribute ns="" name="year"/>
        <search:element ns="http://marklogic.com/wikipedia"
          name="nominee"/>
      </search:sort-order>
      <search:sort-order>
        <search:score/>
      </search:sort-order>
    </search:state>
  </search:operator>
</search:options>
return
search:search("lange sort:year", $options)

しかし、ここでもソートするフィールドがハードコーディングされています。実行時に並べ替え順序の列を決定するカスタム制約のようなことをしたい..

これは可能ですか??

4

1 に答える 1

5

さて、あなたが挙げた例では、それは一種のハードコーディングされていると述べています。この状態では単なる XML です。このステップの前にプログラミング ロジックを使用して、要素と並べ替え順序を決定し、それに応じて XML を構築できます。以下の小さな例では、タイトル要素の昇順または降順で並べ替えを行います。この小さな例は、より大きなスケールで何を行うかを理解するのに役立ちます。

let $sort-direction := "descending"

let $options :=
    <search:options>
      <search:operator name="sort">
        <search:state name="relevance">
          <search:sort-order>
            <search:score/>
          </search:sort-order>
        </search:state>
        <search:state name="year">
          <search:sort-order direction="{$sort-direction}" type="xs:gYear"
                collation="">
            <search:attribute ns="" name="year"/>
            <search:element ns="http://marklogic.com/wikipedia"
              name="nominee"/>
          </search:sort-order>
          <search:sort-order>
            <search:score/>
          </search:sort-order>
        </search:state>
      </search:operator>
    </search:options>
    return
    search:search("lange sort:year", $options)
于 2016-02-06T23:07:45.467 に答える