0

好的,我正在尝试在 MarkLogic 中解码 base64 编码的 rtf 文档。

xquery version "1.0-ml";

declare namespace cdm = "http://example.nl/cdm/1.2";

let $inh := <cdm:inhoud>

Large base64  encoded RTF doc here

</cdm:inhoud>
let $pv           := $inh/text()
(:
let $decodedDoc   := document {xdmp:document-filter( text{ xdmp:base64-decode($pv) } )}
:)
return document {xdmp:document-filter( text{ xdmp:base64-decode($pv) } )}

我收到此错误:

 SVC-PROCESSRUN: xdmp:document-filter(text{"{\rtf1\ansi\ansicpg1252\uc1\deff1{\fonttbl&#13;&#10;{\f0\fnil\fc..."}) -- Process run error: fork: Cannot allocate memory

仅运行

xdmp:base64-decode($pv)

解码rtf文件但真的很乱......

我的服务器没有足够的内存吗?

4

1 回答 1

0

我认为问题主要在于您强制 MarkLogic 将整个解码字符串以及过滤结果保留在内存中。如果您不需要在此代码中解码,并将文档或请求正文直接搜索到文档过滤器中,这将有所帮助。也不要将文档过滤器结果包装在文档构造函数中。它已经返回了一个文档节点。

于 2016-02-11T16:19:36.387 回答