避免 XDMP-EXPNTREECACHEFULL 并加载文档

2023-11-23

我正在使用 marklogic 4,并且有大约 15000 个文档(每个文档大约 10 KB)。我想将整个内容作为文档加载(并将所有文档转换为单个 csv 文件并输出到 HTTP 输出流以供下载)。当我以这种方式加载文档时:

let $uri := cts:uri-match('products/documents/*.xml')
let $doc := fn:doc ($uri)

xpath 有大约 15000 个 xml。所以fn:doc抛出错误XDMP-EXPNTTreeCacheFull.

有什么解决方法吗?我无法在管理控制台中增加树缓存大小,因为 xml 文件的数量产品/文档/*.xml可能会增加。

Thanks.


当您想要从 MarkLogic 导出大量 XML 时,最好的技术是编写查询,以便结果可以流式传输,从而完全避免扩展树缓存。不过,这是一种非常不同的编码风格:您必须避免任何类型的强类型,并重构代码以删除 FLWOR 表达式。您也无法在 cq 或 qconsole 中测试任何代码。

看一眼http://blakeley.com/blogofile/2012/03/19/let-free-style-and-streaming/有关如何到达那里的一些提示。您发布的代码示例至少必须变为:

doc(cts:uri-match('products/documents/*.xml'))

顺便说一句,我会尝试修改它以避免*.xml部分,因为它会比需要的慢。也许是这样的?

cts:search(
  collection(),
  cts:directory-query('products/documents/', 'infinity'))

如果您需要测试目录以外的内容,您可以添加cts:and-query和一些cts:element-query test.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免 XDMP-EXPNTREECACHEFULL 并加载文档 的相关文章

随机推荐

  • 在 C# 中使用 XML 文件存储数据

    我基本上是在寻找有人在这方面为我指明正确的方向 我阅读了一些 Microsoft 文档 但这并没有多大帮助 这是我第一次尝试使用 XML 我正在编写一个应用程序 需要存储已知用户的列表以及每个用户创建的别名列表 我已经弄清楚如何在应用程序关
  • Python Django ValueError:源代码字符串不能包含空字节

    我已经放下了一个我已经工作了几个月的 Django 项目 当我尝试重新运行服务器时 我收到了这个错误 ValueError source code string cannot contain null bytes 回溯是 C Users B
  • 在ios7中重新加载tableView标题

    如何在不重新加载所有表的情况下做到这一点 UIView tableView UITableView tableView viewForHeaderInSection NSInteger section UIView header if se
  • 无点风格并使用 $

    如何结合使用 和无点风格 一个明显的例子是下面的实用函数 times Int gt a gt a times n xs concat replicate n xs 只是写concat replicate产生错误 同样你不能写concat r
  • 在 Github 上获取 Travis Shield 以反映所选分支状态

    现在 无论我在 github 项目页面中选择哪个分支 我都可以让 travisshield 反映最新运行或特定分支 我可以通过在 URL 末尾省略或指定分支名称来完成此操作 相反 我想获得与所选分支相对应的盾牌 换句话说 每次我选择不同的分
  • 使用 javascript 取消注释 html 代码

    带有一些注释标签的 Html 表 我只是想取消注释这些标签 我尝试过使用 javascript 的正则表达式 但问题是它删除了整个注释行 因为我只是想取消注释这些标签 下面是带有注释标签的示例 html 表 table tr td ABCD
  • Angular2在第一次点击后删除点击事件绑定

    在我的应用程序中 我有一个甚至可以单击的按钮
  • 流星反应中的时刻?

    一直在使用https github com acreeger meteor moment在流星中 它工作得很好 但是有没有一种方法可以使时刻反应输出 以便它计数 3秒前 4秒前 等 我不会为每个单独的计时器使用新的会话变量 而是创建一个Tr
  • 如何识别并设置 Maven 中缺少的环境属性?

    我进行了构建设置 以便通过命令行传递变量 mvn clean install DsomeVariable data 在我的 pom 中我有
  • 如何在Python中将有符号整数转换为无符号整数

    假设我有这个号码i 6884376 我如何将其称为无符号变量 就像是 unsigned long i in C Assuming 你心里有 2 的补码表示 和 By unsigned long you mean无符号 32 位整数 那么你只
  • 如何为Web方法传递可选参数?

    我有一个带有多个参数的网络方法 web方法只依赖2个字段 其余都是可选的 OperationContract public string WarehouseContactInformation int WAID Required strin
  • (一般)从自定义数据类型构建解析器?

    我正在开发一个需要与服务器通信的网络流媒体客户端 服务器将响应编码为字节串 例如 1 NULJohn NULTeddy NUL501 NUL 其中 NUL 是分隔符 上面的响应翻译为 这是一条类型1的消息 由服务器硬编码 它告诉客户端用户的
  • 仅使用 sed 或 awk 从 html 页面提取 url 的最简单方法

    我想从 html 文件的锚标记中提取 URL 这需要在 BASH 中使用 SED AWK 来完成 请不要使用 Perl 做到这一点最简单的方法是什么 你也可以做这样的事情 前提是你安装了 lynx Lynx 版本 lynx dump lis
  • 理解 Java 字节

    因此 昨天在工作中 我必须编写一个应用程序来计算 AFP 文件中的页数 所以我重新整理了 MO DCA 规范 PDF 并找到了结构化字段BPG Begin Page 及其 3 字节标识符 该应用程序需要在 AIX 机器上运行 因此我决定用
  • Linux下获取缓冲区的物理地址

    我在具有完整 MMU 的 Xilinx Microblaze 上运行 Linux 内核 3 3 我正在执行的任务要求我了解以下内容 我需要创建一个文本文件 缓冲区 并找到该缓冲区的物理地址 并且我不希望内核将此文件写入不连续的内存区域 我需
  • 单击时复制文本字符串

    我希望能够在单击时复制文本字符串没有按钮 文本字符串将位于 span 类内 用户将鼠标悬停在文本字符串上 用户单击文本字符串 文本字符串被复制到剪贴板 您可以附上copy事件至 span 元素 使用document execCommand
  • 将 Spring 参数添加到 VSCode Debug launch.json

    我正在 VSCode 中使用 Java Springboot 2 1 2 应用程序 我的调试器正在工作并且可以运行该应用程序 但是 我很难将 Spring 特定参数添加到运行命令中 我环顾四周但似乎找不到任何关于此的信息 我试图告诉 spr
  • 模块构建失败:类型错误:无法读取未定义的属性“newLine”

    昨天一切都运行良好 现在当我尝试提供服务时出现以下错误 src main ts 中出现错误 模块构建失败 类型错误 无法读取未定义的属性 newLine 在 Object getNewLineCharacter Users leongaba
  • Python 环境应该使用 conda 或 conda-forge 吗?

    Conda and conda forge都是 Python 包管理器 当两个存储库中都存在包时 正确的选择是什么 例如 Django 可以使用其中任何一个安装 但两者之间的区别在于几个依赖项 conda forge 还有更多 没有对这些差
  • 避免 XDMP-EXPNTREECACHEFULL 并加载文档

    我正在使用 marklogic 4 并且有大约 15000 个文档 每个文档大约 10 KB 我想将整个内容作为文档加载 并将所有文档转换为单个 csv 文件并输出到 HTTP 输出流以供下载 当我以这种方式加载文档时 let uri ct