XQuery возвращает счетчик для каждого узла .. Я хочу, чтобы те, как общее количество с циклом - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь вернуть счетчик ключевого слова в xquery, но он отправляет счетчик каждого узла в задании corb.Может кто-нибудь, пожалуйста, помогите

Ниже приведен запрос, который я использую на работе corb

МОДУЛЬ URIS

let $d1 := xs:date("2019-01-10")
let $t1 := xs:time("17:15:00")
let $d2 := xs:date("2019-01-16")
let $t2 := xs:time("22:39:00")
let $uris:= cts:uris((),(),
  cts:and-query((
    cts:element-range-query(xs:QName("meta:source"), "=", "CIRRUS", $CODEPOINT),
    cts:element-range-query(xs:QName("meta:modifiedDateTime"), ">=", 
    fn:dateTime($d1, $t1)),
    cts:element-range-query(xs:QName("meta:modifiedDateTime"), "<=", fn:dateTime($d2, $t2))
  ))
)
return (fn:count($uris), $uris)`

МОДУЛЬ ПРОЦЕССА

declare variable $URI as xs:string external;
let $URI := xdmp:estimate(cts:search(fn:doc(), cts:word-query("Cirrus")))
return $URI`

1 Ответ

0 голосов
/ 24 января 2019

Модуль процесса вызывается для каждого из URI в последовательности, возвращаемой из модуля URI.Каждый раз, когда вызывается модуль процесса, он устанавливает значение переменной $URI для этого выполнения.

Модуль процесса не использует переменную $URI как часть выполнения.Он выполняет тот же статический запрос оценки, присваивая это значение переменной с аналогичным именем, называемой $ URI, и затем возвращая один и тот же результат для каждого выполнения.

Если вы хотите подсчитать вхождения слова в каждом документе, затем вы должны использовать $URI для загрузки документа: fn:doc($URI) и затем посчитать, сколько элементов meta:source имеют это слово.

Модуль процесса использовал "Cirrus", но запрос URI былпоиск "CIRRUS", но не ясно, что было $ COLLATION.Предполагая, что вам нужна оценка без учета регистра, вы можете просто lower-case() значение и проверить равенство "cirrus".

declare namespace meta = "whatever your namespace is"
declare variable $URI as xs:string external;
count(fn:doc($URI)//meta:source[lower-case(.) = "cirrus"])
...