xquery返回每个节点的计数。。我更希望这些作为循环的总计数

xquery返回每个节点的计数。。我更希望这些作为循环的总计数,xquery,marklogic-corb,Xquery,Marklogic Corb,我试图在xquery中返回关键字的计数,但它正在发送corb作业中每个节点的计数。有人能帮忙吗 下面是我在corb作业中使用的查询 URI模块 let $d1 := xs:date("2019-01-10") let $t1 := xs:time("17:15:00") let $d2 := xs:date("2019-01-16") let $t2 := xs:time("22:39:00") let $uris:= cts:uris((),(), cts:and-query((

我试图在xquery中返回关键字的计数,但它正在发送corb作业中每个节点的计数。有人能帮忙吗

下面是我在corb作业中使用的查询

URI模块

let $d1 := xs:date("2019-01-10")
let $t1 := xs:time("17:15:00")
let $d2 := xs:date("2019-01-16")
let $t2 := xs:time("22:39:00")
let $uris:= cts:uris((),(),
  cts:and-query((
    cts:element-range-query(xs:QName("meta:source"), "=", "CIRRUS", $CODEPOINT),
    cts:element-range-query(xs:QName("meta:modifiedDateTime"), ">=", 
    fn:dateTime($d1, $t1)),
    cts:element-range-query(xs:QName("meta:modifiedDateTime"), "<=", fn:dateTime($d2, $t2))
  ))
)
return (fn:count($uris), $uris)`

按照从URI模块返回的序列,为每个URI调用流程模块。每次调用流程模块时,它都会为该执行设置
$URI
变量的值

流程模块未将
$URI
变量用作执行的一部分。它执行相同的静态估计查询,将该值分配给名为$URI的类似命名变量,然后为每次执行返回相同的结果

如果要计算单词在每个文档中的出现次数,则应使用
$URI
加载文档:
fn:doc($URI)
,然后计算有多少
meta:source
元素具有该单词

进程模块使用的是“Cirrus”,但URI查询正在搜索“Cirrus”,但不清楚$COLLATION是什么。假设您需要不区分大小写的求值,您只需
lower-case()


我不知道您的输入和输出是做什么的,我也不熟悉xdmp和cts扩展函数,但我可以告诉您,您使用的变量好像这是一种低级命令式语言,而不是函数式语言,这是行不通的。使用
count()
函数,并使用一个参数,该参数的计算结果为包含要计数的内容的序列。不要试图修改变量的值。
xdmp:estimate(cts:search(fn:doc(),cts:word query(“Cirrus”))
将返回包含该单词的文档数。您是否正在尝试计算该单词出现的次数?或者,您想迭代包含此单词的每个文档并返回每个文档中出现次数的计数吗?Hi@MadsHansen此查询返回计数,我也知道,但当作为corb作业运行时,它并不是一次性给我提供文档数量,而是一个接一个地处理一个节点,并打印每个节点的计数。你能更新问题并发布corb处理模块中的代码吗?hi@MadsHansen它是更新的Hanks@MadsHansen,但我得到了许多计数行。当我在ML控制台上运行URI-MODULE查询时,我得到的计数要少得多。但是,有了这个,我得到了太多的计数。它一直在打印1。如果这个1的总和等于我在ML控制台中得到的值,那么我很好。如果您的每个文档都只有其中一个元素,那么就不需要将其作为批处理作业运行。只需执行xdmp:estimate搜索。您可以为此使用CORB ModuleExecutor类,也可以使用/v1/eval REST端点
declare variable $URI as xs:string external;
let $URI := xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus")))
return $URI`
declare namespace meta = "whatever your namespace is"
declare variable $URI as xs:string external;
count(fn:doc($URI)//meta:source[lower-case(.) = "cirrus"])