2015-10-14 114 views
0

好吧,我想解碼MarkLogic中的base64編碼rtf文檔。沒有足夠的內存將base64 rtf doc轉換爲xml?

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文件,但真的很亂......

我的服務器是否有沒有足夠的內存?

+0

現在問題不復存在,解碼工作再次。不知道是什麼導致了這個......真的很大的error.txt日誌文件有什麼關係嗎? –

回答

0

我認爲問題主要是你強迫MarkLogic保留整個解碼字符串以及過濾結果在內存中。如果您不需要在此代碼內部進行解碼,並直接在文檔過濾器中搜索文檔或請求主體,這將有所幫助。也不要在文檔構造函數中包裝文檔過濾結果。它已經返回一個文檔節點。

HTH!