好的,我正在尝试解码MarkLogic中的base64编码rtf文档。
conn.get_instance_attribute(instance_id=instance.id, attribute='blockDeviceMapping')['blockDeviceMapping']
{u'/dev/sda1': <boto.ec2.blockdevicemapping.BlockDeviceType object at 0x2a62190>}
我收到此错误:
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 {\f0\fnil\fc..."}) -- Process run error: fork: Cannot allocate memory
解码rtf文件,但确实很乱......
我的服务器内存不足吗?
答案 0 :(得分:0)
我认为问题主要在于您强制MarkLogic将整个解码后的字符串以及过滤后的结果保留在内存中。如果您不需要在此代码中进行解码,并将文档或请求正文直接搜索到文档过滤器,这将有所帮助。也不要将文档过滤器结果包装在文档构造函数中。它已经返回一个文档节点。
HTH!