5

我的第一个子元素有一个带有 PathRangeIndex 的元素DateTimeList,如下所示:

/ResultPage/DateTimeList/DateTime[1]

通常我们对具有属性的元素进行如下排序:

<sort-order type="xs:string" direction="ascending">
    <element ns="" name="div"/>
    <attribute ns="" name="order"/>
</sort-order>

是否有任何类似的方法来排序DateTimeList元素,使用它的第一个子元素(使用路径范围索引)。我尝试如下:

<sort-order direction="ascending" type="xs:dateTime">
   <path-index>/ResultPage/DateTimeList/DateTime[1]</path-index>
</sort-order><sort-order><score/></sort-order></state></operator>

但得到的结果没有任何变化,如下所示:

<DateTimeList>
   <DateTime>2014-05-07T10:26:00</DateTime>
</DateTimeList>
<DateTimeList>
   <DateTime>2013-12-01T00:00:00</DateTime>
   <DateTime>2014-05-01T00:00:00</DateTime>
   <DateTime>2014-12-01T00:00:00</DateTime>
</DateTimeList>
<DateTimeList>
   <DateTime>2013-09-01T10:32:42</DateTime>
</DateTimeList>
<DateTimeList>
   <DateTime>2014-05-30T00:00:00</DateTime>
   <DateTime>2015-05-30T00:00:00</DateTime>
</DateTimeList >

谢谢。

4

2 回答 2

5

当前版本MarkLogic Search API实际上不支持按path-index排序。但是,您已经构建了一个表达式,一旦该支持出现在产品中,该表达式就会起作用。有计划推出它。

我建议使用search:check-options($options)来查看您的选项是否有效。我相信在这种情况下,检查选项会报告该节点无效。

于 2013-09-26T22:32:18.543 回答
0

这里没有足够的信息来重现问题,但是所有这些DateTimeList元素都在同一个文档中吗?DateTimeList还是每个文档有多个元素?

搜索和排序主要发生在文档级别。MarkLogic 是一个面向文档的数据库。因此索引指向文档,其行为类似于 RDBMS 表中的行。

如果是这样,请考虑分解文件。它在技术上是可能的,例如,DateTimeList并添加一个searchable-expressionon //DateTimeList。但我的经验是,最好从一开始就在正确的层次上构建文档。

于 2013-09-25T18:26:21.637 回答