我想知道从两段中提取的两组distinctive-terms
之间的共同术语数量。我使用distinctive-terms
中的distinctive-terms
函数从每个段落中提取了XQuery
。现在我想知道两组distinctive-terms
之间共同的术语数量。有这样的功能吗?
答案 0 :(得分:2)
嗯,你可以做$left-terms[. = $right-terms]
这样的事情来获得相交,但如果你想在多个文档上运行它,我不会感到惊讶。在这种情况下,我建议内联标记不同的术语,或者将内容添加到内容中,对其进行索引,并使用构面或低级cts:values
来获得基于频率的顶级术语..
HTH!
答案 1 :(得分:1)
听起来你想知道"交集"两套之间。这可以使用map:map
对象在MarkLogic中轻松完成。
您可以在此处获得大量信息:http://www.xquerycoder.com/2014/04/set-theory-map-operators.html
我在这里给出一个小例子:
(: Two sequences :)
let $strings1 := ("a", "b", "c", "d", "e")
let $strings2 := ("a","d","p","q")
(: Put them in maps :)
let $map1 := map:new($strings1 ! map:entry(., "1"))
let $map2 := map:new($strings2 ! map:entry(., "1"))
(: Take the intersection, get the keys from it :)
return for $key in map:keys($map1 * $map2)
return $key
我会注意到我之所以使用地图运算符而不是像$items1[. eq $items2]
这样的东西是因为我发现在处理大量数据时地图运算符非常快。此外,我还有一些灵活性,我对不同类型的设置操作表示赞赏。