2017-04-18 71 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排序我的搜索结果。我知道的一种方法是use a loop。但是这个循环会影响查询的性能。

是否有任何其他方式只用MarkLogic获取搜索结果?

回答

1

cts:search()允许订单规格作为其选项之一,您可以使用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 - 最后修改的 类型 - dateTime –

相关问题