Как использовать fn: start-with () и fn: end-with () с cts: uris ()

Мое требование: я хочу вернуть URI документа только в том случае, если значение индекса диапазона пути начинается или заканчивается некоторым словом.

Согласно документации MarkLogic, я могу использовать только ">,‹, ‹=,> =, =,! =" Для сравнения значения индекса диапазона пути, но в моем требовании я хочу использовать fn: start-with () или fn: end- с участием().

Есть ли способ удовлетворить это требование?


person Shivling Bhandare    schedule 25.02.2020    source источник
comment
почему вы не используете cts:uri-match("*/some/path*")?   -  person bosari    schedule 25.02.2020
comment
Спасибо, @bosari за ответ. Если вы посмотрите на мой вопрос, я хочу использовать fn: start-with () и fn :nds-with () для значений индекса Path Range, а не для URI.   -  person Shivling Bhandare    schedule 25.02.2020
comment
Вы еще не смотрели cts:value-match?   -  person grtjn    schedule 25.02.2020


Ответы (1)


Для поиска всех значений, начинающихся с и в конце значение.

Затем используйте cts:path-range-query() с этими значениями в вызове _ 3_

let $path := "/doc/foo";
let $word := "bar";
(: find the values that start with and end with the $word :)
let $values-starts-and-ends-with := (
  cts:value-match(cts:path-reference($path), $word||"*"), 
  cts:value-match(cts:path-reference($path), "*"||$word)
) 
(: use those values to find the URIs of docs with those values at that path :)
cts:uris("", (), cts:path-range-query($path, "=", $values-starts-and-ends-with))
person Mads Hansen    schedule 25.02.2020