gpt4 book ai didi

xquery - MarkLogic:将 cts:search 表达式绑定(bind)到变量

转载 作者:行者123 更新时间:2023-12-04 17:49:35 25 4
gpt4 key购买 nike

在 MarkLogic 中,是否可以绑定(bind) cts:search表达式到一个变量,然后在 中的其他地方使用该变量XQuery ?

我想做这样的事情:

let $query := cts:search(doc(),
cts:and-query((
cts:element-attribute-word-query(
xs:QName("para"),
xs:QName("role"),
"intro") ,

cts:element-attribute-word-query(
xs:QName("title"),
xs:QName("role"),
"inline")
))
)


let $number-of-results := xdmp:estimate($query)

return $number of results

但是,我不确定如何传递表达式本身,而不是它返回的内容。

最佳答案

Geert 的回答是正确而实用的:重用 cts:query item,而不是数据库访问表达式。使用 cts:query根据需要查询数据库。

但在某些情况下,像原始问题一样“传递表达式本身”可能很有用。这可能看起来很困难,因为 XQuery 1.0 并没有真正允许元编程。变量绑定(bind)到项目序列,这是评估表达式的结果。变量不绑定(bind)到未计算的表达式。

MarkLogic 提供了一种解决方法,使用像 http://docs.marklogic.com/xdmp:path 这样的函数。或 http://docs.marklogic.com/xdmp:valuehttp://docs.marklogic.com/xdmp:eval用于通用表达式评估。在大多数情况下,最好绑定(bind) cts:query ,如 Geert 的回答。但是,如果您真的需要元编程,您可以将表达式构建为字符串并按需评估它们。

let $query := 'cts:search(doc(),
cts:and-query((
cts:element-attribute-word-query(
xs:QName("para"),
xs:QName("role"),
"intro") ,

cts:element-attribute-word-query(
xs:QName("title"),
xs:QName("role"),
"inline")
))
)'
return xdmp:value('xdmp:estimate('||$query||')')

关于xquery - MarkLogic:将 cts:search 表达式绑定(bind)到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20520083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com