XQuery,如何知道两组独特术语之间的共同术语数量

时间:2016-06-27 12:34:04

标签: xquery marklogic marklogic-8

我想知道从两段中提取的两组distinctive-terms之间的共同术语数量。我使用distinctive-terms中的distinctive-terms函数从每个段落中提取了XQuery。现在我想知道两组distinctive-terms之间共同的术语数量。有这样的功能吗?

注意:我附上了段落特色条款样本的截屏。 sample of the distinctive terms

2 个答案:

答案 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]这样的东西是因为我发现在处理大量数据时地图运算符非常快。此外,我还有一些灵活性,我对不同类型的设置操作表示赞赏。