XQuery,如何知道两组独特术语之间的共同术语数
XQuery, how to know the number of terms in common between two sets of distinctive-terms
我想知道从两个段落中提取的两组 distinctive-terms
之间的共同术语数。我使用 XQuery
中的 distinctive-terms
函数从每个段落中提取了 distinctive-terms
。现在我想知道两组 distinctive-terms
之间共有的术语数。有这样做的功能吗?
注意:我附上了一个段落的独特术语示例的屏幕截图。
好吧,您可以执行 $left-terms[. = $right-terms]
之类的操作来获得相交,但是如果您想要 运行 对多个文档执行此操作,我不会感到惊讶。在这种情况下,我建议内联标记独特的术语,或将术语添加到内容中,对其进行索引,并使用方面或低级 cts:values
来获取基于频率的顶级术语..
HTH!
听起来您想知道两组之间的 "intersection set"。这可以在 MarkLogic 中使用 map:map
个对象轻松完成。
你可以在这里得到很多信息: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]
之类的东西的原因是因为我发现地图运算符在处理大量数据时速度非常快。另外,我很欣赏不同类型的集合操作的一些灵活性。
我想知道从两个段落中提取的两组 distinctive-terms
之间的共同术语数。我使用 XQuery
中的 distinctive-terms
函数从每个段落中提取了 distinctive-terms
。现在我想知道两组 distinctive-terms
之间共有的术语数。有这样做的功能吗?
注意:我附上了一个段落的独特术语示例的屏幕截图。
好吧,您可以执行 $left-terms[. = $right-terms]
之类的操作来获得相交,但是如果您想要 运行 对多个文档执行此操作,我不会感到惊讶。在这种情况下,我建议内联标记独特的术语,或将术语添加到内容中,对其进行索引,并使用方面或低级 cts:values
来获取基于频率的顶级术语..
HTH!
听起来您想知道两组之间的 "intersection set"。这可以在 MarkLogic 中使用 map:map
个对象轻松完成。
你可以在这里得到很多信息: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]
之类的东西的原因是因为我发现地图运算符在处理大量数据时速度非常快。另外,我很欣赏不同类型的集合操作的一些灵活性。