gpt4 book ai didi

马克逻辑 8 : Count documents per collection and/or directory

转载 作者:行者123 更新时间:2023-12-02 06:46:58 25 4
gpt4 key购买 nike

我的 marklogic 数据库中有 5000 万份文档。我想分析内容以了解文档的主要类别。

我的每个文档都在一个特定的文件夹中(即:“/books/”)和一个特定的集合(“/type/books”)。

我想生成一个包含两列的 CSV:name_of_the_collection;count_distinct_value

示例:

Collection;count
books;437438
cars;46565
cats;457373

与目录相同:

directory;count
/animals/cats/;437438
/animals/dogs;46565
/animals/cow;457373

我试图列出所有不同的类别/集合并计算文档的数量,但我无法将两者结合起来。

你能帮帮我吗?

谢谢,罗曼。

最佳答案

给定集合的名称 xdmp:estimate(cts:search(doc(), cts:collection-query($collection)) 将为您提供该集合中文档的数量集合。与 cts:directory-query($directory) 类似,用于目录。

如果启用了集合词典,则可以直接获取所有集合计数:cts:collections()!text{.||";"||cts:count(.)}

对于目录,这有点棘手,但是如果您启用了 URI 集合,您也可以通过一些工作来获取目录:

declare function local:basepath( 
$uri as xs:string
) as xs:string
{
if ( fn:contains( $uri, "/" ) )
then
let $path := fn:replace( $uri, "^(.*)/([^/]*)$", "$1" )
return if ($path = "") then "/" else $path
else ""
};

let $map := map:map()
let $_ :=
for $uri in cts:uris()
let $dir := local:basepath($uri)
return
if (empty(map:get($map, $dir)))
then map:put($map, $dir, 1)
else map:put($map, $dir, map:get($map,$dir)+1)
for $key in map:keys($map)
return ($key||";"||map:get($map,$key))

关于马克逻辑 8 : Count documents per collection and/or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164587/

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