2017-04-18 9 views
0

私は、各ドキュメントのドキュメントプロパティを持っている -ソート文書:検索

<prop:properties xmlns:prop="http://marklogic.com/xdmp/property"> 
    <prop:last-modified>2017-04-12T04:55:57Z</prop:last-modified> 
</prop:properties> 

今私はprop:last-modifiedを使用して、私の検索結果をソートしたいです。私が知るべき1つの方法はuse a loopです。しかし、このループはクエリのパフォーマンスに影響します。

MarkLogicのみで検索結果を得る他の方法はありますか?

答えて

1

cts:search()は、そのオプションの1つとして注文仕様を許可し、cts:index-orderを使用してそのオプションを設定することができます。

prop:last-modifiedで検索している場合は、cts:search documentationの例から遠くはありません。残念ながら、このソートオプションは無視されます(バグかもしれません)。

cts:search(fn:doc(), "hello", 
("unfiltered", 
cts:index-order(
    cts:element-reference(
     xs:QName("prop:last-modified")), 
     "descending")))[1 to 10] 

prop:last-modifiedに定義された要素範囲インデックスが必要です。

これを処理するには、最も効果的で簡単な方法が考えられます。検索結果をFLWOR文に引き出し、古いものを使用して並べ替えます。order by

for $r in cts:search(fn:doc(), cts:true-query()) 
order by $r/property::prop:last-modified descending 
return $r/property::prop:last-modified 
+0

これはドキュメントプロパティでも機能しますか?私はそれを試しましたが、それは動作していません。ドキュメントのプロパティではなく、ドキュメントのソートのように見えます。 –

+0

ドキュメントプロパティに要素範囲インデックスが定義されていますか?ドキュメント要素範囲インデックスと同じ方法で設定する必要があります。 –

+0

要素範囲インデックスは で定義されています。uri - http://marklogic.com/xdmp/property localname - 最終変更 type - dateTime –

関連する問題