我有Marklogic Count xquery,可以很好地返回关键字的总计数。我试图运行与CORB作业相同的查询

时间:2019-01-23 15:16:53

标签: xquery marklogic marklogic-corb

我有Marklogic Count xquery,可以很好地返回关键字的总计数。我试图运行与CORB作业相同的查询,但是得到的结果是每个节点的计数。有人对此有任何想法吗,然后分享我的想法。

下面的查询是我正在使用的。

xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus")))

1 个答案:

答案 0 :(得分:1)

xdmp:estimate返回查询匹配的文档(片段)数,而不是特定术语在这些文档中匹配的次数。这种情况发生得非常快,因为MarkLogic只能使用索引来计算数字。

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

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

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