MarkLogic 8 - 按路径索引排序

时间:2015-02-14 13:21:13

标签: marklogic

ML 8中是否已支持路径索引的排序顺序?我想达到类似下面的目的:

<options xmlns="http://marklogic.com/appservices/search">
  <sort-order collation="http://marklogic.com/collation/en/S1/EO/CU/MO" type="xs:string" direction="ascending">
    <path-index>attritbutes//name</path-index>
  </sort-order>
</options>

如果没有,有没有办法实现这个目标?我有来自不同父节点或根元素的多个具有相同名称的元素,因此我无法使用

<options xmlns="http://marklogic.com/appservices/search">
  <sort-order collation="http://marklogic.com/collation/en/S1/EO/CU/MO" type="xs:string" direction="ascending">
    <element ns="" name="name"/>
  </sort-order>
</options>

3 个答案:

答案 0 :(得分:9)

根据docs

  

sort-order元素必须具有单个元素子元素,单个分数子元素,单个字段子元素或单个json-property子元素之一。

所以你不能拥有一个路径孩子,但有办法。根据您要使用的路径创建一个字段,然后根据该字段进行排序。

答案 1 :(得分:2)

8.0-1中存在架构错误,因此sort-order / path-index不会验证。

但是,代码实现了对sort-order / path-index的支持,因此如果您不验证选项,它应该可以工作。但是,最好使用Dave建议的字段,以便继续使用验证来检查错误。

架构错误已在8.0-2中修复。

答案 2 :(得分:2)

是,在'name'元素

上创建一个字段
<options xmlns="http://marklogic.com/appservices/search">
  <sort-order type="xs:string" 
              collation="http://marklogic.com/collation/" 
              direction="ascending">
    <field name="name"/>
  </sort-order>
</options>