在marklogic 8中对多个地图进行排序

拉维

这比MarkLogic更像是一个XQuery。我有三个map:map,每个地图都有“ id”和得分的键值对。我想根据每张地图的得分对所有不同的ID进行排序。例如:

map1 : 1:2048, 5:2000
map2 : 2:5000, 1:1000, 4:3000
map3 : 6:100, 7:5000, 2:2000

在上面的示例中,每个映射的键值都是id:score(不知道如何在这里表示:))。

我想要基于分数的三张地图的ID排序列表。

有没有一种好方法或更好的方法来进行排序,还是我必须合并映射的键并迭代键的序列并对它们进行排序?

泰勒重制

这似乎是折叠的绝佳用例。它是Xquery 3.0规范的一部分。

折叠可以遍历一系列项目,并在遍历每个项目时获得结果。在此示例中,$ combinedMaps是最后一次调用的结果,而$ mapToMerge是当前正在执行的序列中的项目。

这是您要执行的操作的示例。

   declare function local:sortMaps(
  $newMap as map:map,
  $mapA as map:map,
  $mapB as map:map
) as map:map {
  let $build :=
    for $key in map:keys($mapA)
    let $otherMapValue :=
      (map:get($mapB, $key), 0)[1]
    let $value := map:get($mapA, $key)
    return 
      if ($value gt $otherMapValue) then (
        map:put($newMap, $key, $value)
      ) else (
        map:put($newMap, $key, $otherMapValue)
      )
  return $newMap
};

let $map1 := 
  map:new((
    map:entry("1",2048),
    map:entry("5",2000)
  ))

let $map2 := 
  map:new((
    map:entry("2",5000),
    map:entry("1",1000),
    map:entry("4",3000)
  ))

let $map3 := 
  map:new((
    map:entry("6",100),
    map:entry("7",5000),
    map:entry("2",2000)
  ))

let $maps := ($map1, $map2, $map3)
return
  fn:fold-left(
    function($combinedMaps, $mapToMerge) {
      let $newMap := map:map()
      let $newMap := local:sortMaps($newMap, $combinedMaps, $mapToMerge)
      let $newMap := local:sortMaps($newMap, $mapToMerge, $combinedMaps)
      return $newMap
    }, 
    $maps[1], 
    $maps
  )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在marklogic中动态排序结果

来自分类Dev

在marklogic中动态排序结果

来自分类Dev

使用MarkLogic进行计数

来自分类Dev

节点0.12.0 + Marklogic 8

来自分类Dev

在MarkLogic中请求停电

来自分类Dev

MarkLogic中的Taskserver线程

来自分类Dev

MarkLogic 8-按路径索引排序

来自分类Dev

在MarkLogic的XQuery中实现自然排序

来自分类Dev

MarkLogic sem:MarkLogic Java API中的功能组

来自分类Dev

Marklogic中的FileType构面

来自分类Dev

MarkLogic中的哪些方面

来自分类Dev

在MarkLogic函数中删除“ fn:”?

来自分类Dev

了解Marklogic中的范围索引

来自分类Dev

在Marklogic中删除计划的任务

来自分类Dev

MarkLogic中的“范围”范围查询?

来自分类Dev

MarkLogic中的哪些方面

来自分类Dev

了解Marklogic中的范围索引

来自分类Dev

如何替换MarkLogic中的节点?

来自分类Dev

MarkLogic中的命名图支持

来自分类Dev

在MarkLogic Server中安装转换

来自分类Dev

Marklogic 中 NEAR 查询的问题

来自分类Dev

Marklogic 8中的SPARQL 1.1属性路径

来自分类Dev

在XQuery和Marklogic 8中更新JSON

来自分类Dev

MarkLogic-使用PojoQueryBuilder进行“喜欢”搜索

来自分类Dev

MarkLogic-使用PojoQueryBuilder进行“喜欢”搜索

来自分类Dev

Marklogic 8 Windows 7安装后登录

来自分类Dev

MarkLogic 8 NodeJS Angular JSON事务

来自分类Dev

MarkLogic 8对象到文档节点

来自分类Dev

cts中的数字:Marklogic中的单词查询