我有Marklogic Count xquery,可以很好地返回关键字的总计数。我试图运行与CORB作业相同的查询,但是得到的结果是每个节点的计数。有人对此有任何想法吗,然后分享我的想法。
下面的查询是我正在使用的。
xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus")))
答案 0 :(得分:1)
xdmp:estimate
返回查询匹配的文档(片段)数,而不是特定术语在这些文档中匹配的次数。这种情况发生得非常快,因为MarkLogic只能使用索引来计算数字。
但是,要计算文档中的匹配项,必须先将整个文档加载到内存中,然后才能计算匹配项,这比较慢且占用大量内存。如果您尝试对单个查询中的太多文档执行这种计数,则可能会破坏扩展的树缓存(该缓存负责保存查询期间读取的文档的完整XML),因此仔细调整CORB非常重要防止这种情况发生的工作。
下面是一个示例,说明如何计算结果集中查询的所有单个匹配项:
sum(
cts:search(fn:doc(), cts:word-query("Cirrus"))
/cts:walk(., cts:word-query('Cirrus'), 1)
)