我有一个运行良好的Marklogic Count xquery,它返回关键字的总计数。我正在尝试运行与CORB作业相同的查询

我有一个运行良好的Marklogic Count xquery,它返回关键字的总计数。我正在尝试运行与CORB作业相同的查询,xquery,marklogic,marklogic-corb,Xquery,Marklogic,Marklogic Corb,我有一个运行良好的Marklogic Count xquery,它返回关键字的总计数。我试图运行和CORB作业相同的查询,但得到的结果是每个节点的计数。有人对此有什么想法吗?请告诉我 下面是我正在使用的查询 xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus"))) xdmp:estimate返回查询匹配的文档片段数,而不是特定术语在这些文档中匹配的次数。这种情况发生得非常快,因为MarkLogic能够仅使用索引计算数字 但是,要

我有一个运行良好的Marklogic Count xquery,它返回关键字的总计数。我试图运行和CORB作业相同的查询,但得到的结果是每个节点的计数。有人对此有什么想法吗?请告诉我

下面是我正在使用的查询

xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus")))
xdmp:estimate返回查询匹配的文档片段数,而不是特定术语在这些文档中匹配的次数。这种情况发生得非常快,因为MarkLogic能够仅使用索引计算数字

但是,要计算文档中的匹配项,必须先将整个文档加载到内存中,然后才能计算匹配项,这要慢得多,占用大量内存。如果试图在单个查询中对过多文档执行这种类型的计数,则可能会破坏扩展树缓存,该缓存负责保存查询期间读取的完整XML文档,因此仔细调整CORB作业以防止发生这种情况非常重要

下面是一个示例,说明如何计算结果集中查询的所有单个匹配项:

sum(
  cts:search(fn:doc(), cts:word-query("Cirrus"))
    /cts:walk(., cts:word-query('Cirrus'), 1)
)

您好,非常感谢您在这方面提供的详细信息,这确实是一个非常有用的想法。我正在考虑在corb作业生成的文本文件之上编写单词计数脚本。还尝试使用ModuleExecutor选项,因为这似乎是更好的解决方案。您好@rawal,如果这回答了您的问题,请单击左侧的绿色复选框接受。