MarkLogic Corb 严重:收到超过 1 个结果:1

问题描述 投票:0回答:1

我有一份 MarkLogic CoRB 工作。它应该返回 100 条记录。但它失败了

SEVERE: received more than 1 results: 1

我真的很感谢您提供的任何帮助。

uris.xqy:

declare namespace lab = "http://labs.com/record";
declare namespace meta="http://labs.com/lab/record/meta";
let $org := ("Ros* Lab*")
for $uri in cts:uris(
                     (),
                     (),
               cts:and-query((
                  cts:collection-query('/Lab'),
                  cts:field-range-query("updated","<","2023-08-18"),
                  cts:or-query((
                      cts:field-word-query("do",$org,"case-insensitive"),
                ))
            ))
        )
 return (count($uri),$uri)

uris-process.xqy:

xquery version "1.0-ml";
declare namespace lab = "http://labs.com/record";
declare namespace meta="http://labs.com/lab/record/meta";
declare variable $URI as xs:string external;
xdmp:set-request-time-limit(3600),

for $uris in $URI
let $doc := fn:doc($uris)
let $meta := <lab:Record><meta:Metadata>

                 $doc//meta:IDNumber}
                 {$doc//meta:ReportDate}
                 {$doc//meta:ReportNumbers}
             </meta:Metadata></lab:Record>

 let $IDNumber := fn:data($meta//meta:IDNumber)

return
xdmp:save(fn:concat("/XML/",$IDNumber,".xml")$IDNumber ,$meta)

产生此异常:

SEVERE: interrupted: exiting
java.lang.InterruptedException
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
        at java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
        at com.marklogic.developer.corb.Monitor.monitorResults(Monitor.java:97)
        at com.marklogic.developer.corb.Monitor.run(Monitor.java:76)
        at java.lang.Thread.run(Thread.java:750)

Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager run
SEVERE: received more than 1 results: 1
Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager stop
INFO: cleaning up
Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager main
SEVERE: Error while running CORB
java.lang.ArrayIndexOutOfBoundsException: received more than 1 results: 1
marklogic marklogic-corb
1个回答
0
投票

您的 URI 模块看起来不正确。

您正在使用 for 循环迭代每个 URI。

for $uri in cts:uris(

然后对于每个 URI,您将返回一个计数(1),然后为 100 个 URI 中的每一个返回

$uri

因此,您的作业中返回的第一件事是

1
的计数,但随后您将返回序列中的 199 个其他项目。

你想改为让一个

$uris
变量

let $uris := cts:uris(

然后仅返回一个具有计数的序列,然后返回每个 $uri。

return (count($uris), $uris)
© www.soinside.com 2019 - 2024. All rights reserved.