6
votes

Is sort-order by path-index already supported in ML 8? I want to achieve similar to the below:

<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>

If not, is there a way to achieve this? I have several elements with the same name from different parent nodes or from the root element so I can't use just

<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

3 Answers

9
votes

According to the docs:

The sort-order element must have one of a single element child, a single score child, a single field child, or a single json-property child.

So you can't have a path child, but there is a way. Create a field based on the path(s) you want to use, then sort based on that field.

2
votes

There is a schema bug in 8.0-1 so that sort-order/path-index does not validate.

However, the code implements support for sort-order/path-index, so if you don't validate the options, it should work. It might be better, however, to use a field as Dave suggests so you can continue to use validation to check for errors.

The schema bug is fixed in 8.0-2.

2
votes

Yes, Create a field on 'name' element

<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>