Настроить сортировку в Marklogic - PullRequest
0 голосов
/ 04 июля 2018

Я ищу настройки для сортировки предметов из базы данных MarkLogic. При сортировке двойной или одинарной кавычки знак доллара и все другие знаки препинания следует игнорировать.

Ниже приведен пример сценария:

xquery version "1.0-ml";

declare default collation "http://marklogic.com/collation/";

let $seq := ("a", "b", "1", "2", "$3", '"object"')
for $x in $seq
order by $x ascending 
return $x

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Установив параметры сортировки по умолчанию или указав параметры сортировки в order by до http://marklogic.com/collation/en/S1/T00BB/AS, вы сможете удовлетворить большинство ваших требований (без учета кавычек и знаков пунктуации).

Однако $ не является игнорируемым символом. Вы можете удалить $ и любой другой символ, который не должен влиять на порядок сортировки, используя функцию fn:translate():

xquery version "1.0-ml";

let $seq := ("a", "b", "c", "1", "2", "$3", '"object"')
for $x in $seq
order by fn:translate($x, "$", "") ascending collation "http://marklogic.com/collation/en/S1/T00BB/AS"
return $x
0 голосов
/ 04 июля 2018

Вы можете использовать fn:replace(...), чтобы удалить все несловарные символы (и $, который, как представляется, считается символом Word, по крайней мере, BaseX ) из каждой строки:

let $seq := ("a", "b", "1", "2", "$3", '"object"')
for $x in $seq
order by replace($x, '[\W\$]', '') ascending
return $x
...