如何将 fn:starts-with() 和 fn:ends-with() 与 cts:uris() 一起使用
How to use fn:starts-with() and fn:ends-with() with cts:uris()
我的要求是,我想 return 仅当路径范围索引值以某个词开头或结尾时才记录 URI。
根据 MarkLogic 文档,我只能使用“>、<、<=、>=、=、!=”来比较路径范围索引值,但在我的要求中,我想使用 fn:starts-with () 或 fn:ends-with().
有什么办法可以满足这个要求吗?
您可以使用带有前导和尾随通配符的 cts:value-match()
来查找所有以该值开头和结尾的值。
然后使用cts:path-range-query()
with those values in a call to cts:uris()
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))
我的要求是,我想 return 仅当路径范围索引值以某个词开头或结尾时才记录 URI。
根据 MarkLogic 文档,我只能使用“>、<、<=、>=、=、!=”来比较路径范围索引值,但在我的要求中,我想使用 fn:starts-with () 或 fn:ends-with().
有什么办法可以满足这个要求吗?
您可以使用带有前导和尾随通配符的 cts:value-match()
来查找所有以该值开头和结尾的值。
然后使用cts:path-range-query()
with those values in a call to cts:uris()
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))