Marklogic 使用cts:search根据文档属性对文档进行排序
我有每个文档的文档属性-Marklogic 使用cts:search根据文档属性对文档进行排序,marklogic,marklogic-8,Marklogic,Marklogic 8,我有每个文档的文档属性- <prop:properties xmlns:prop="http://marklogic.com/xdmp/property"> <prop:last-modified>2017-04-12T04:55:57Z</prop:last-modified> </prop:properties> 2017-04-12T04:55:57Z 现在我想使用prop:last modified对搜索结果进行排序。我知道的一个
<prop:properties xmlns:prop="http://marklogic.com/xdmp/property">
<prop:last-modified>2017-04-12T04:55:57Z</prop:last-modified>
</prop:properties>
2017-04-12T04:55:57Z
现在我想使用prop:last modified
对搜索结果进行排序。我知道的一个方法是。但是这个循环会对查询的性能产生影响
是否有其他方法仅使用in-MarkLogic获取搜索结果 cts:search()
允许将订单规格作为其选项之一,您可以使用设置该选项
因此,如果您正在搜索prop:last modified
,则与中的示例相差不远。不幸的是,此排序选项被忽略(可能是一个bug)
请注意,您需要为prop:last modified
定义元素范围索引
您的变通方法似乎是处理此问题的最有效和最直接的方法。将搜索结果拉入FLWOR语句中,并使用普通的旧排序依据对其排序:
for $r in cts:search(fn:doc(), cts:true-query())
order by $r/property::prop:last-modified descending
return $r/property::prop:last-modified
这对文档属性有效吗?我试过了,但不起作用。它看起来像是根据文档而不是文档属性进行排序。是否为文档属性定义了元素范围索引?您需要以与文档元素范围索引相同的方式进行设置。我有一个元素范围索引,定义为uri-localname-last modified type-dateTimeSounds,就像索引设置正确一样(只要在名称空间的开头包含“http://”)。“按文档而非文档属性排序”和“不工作”是什么意思?如果不知道实际的cts:search
调用或输出,我很难提供更具体的故障排除建议。您是否收到了一个错误,或者您是否以错误的顺序返回了文档?我正在使用这个查询-declare namespace prop=“marklogic.com/xdmp/property”;;cts:search(fn:doc(),cts:true-query(),((),(cts:index-order(cts:element-reference(xs:QName(“prop:last-modified”),“升序”))[1到10]我在升序和降序的相同序列中得到相同的结果。这就是为什么我假设排序不能正常工作的原因
for $r in cts:search(fn:doc(), cts:true-query())
order by $r/property::prop:last-modified descending
return $r/property::prop:last-modified