【问题标题】:Performance improvement - Alternative for a map in xquery性能改进 - xquery 中地图的替代方案
【发布时间】:2013-01-15 14:11:01
【问题描述】:

我正在使用cts:element-value-co-occurences 进行查询,该查询返回大量值。由于我提供了“map”作为选项,因此这些事件被复制到地图中(下面给出了一个示例)。

为查询返回的地图

map:map(
<map:map xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:map="http://marklogic.com/xdmp/map">
<map:entry key="doc">
  <map:value xsi:type="map:map">
  <map:map>
     <map:entry key="/data/fb/www.abcdefgh.com#form123456665364#thread123456968765#post987986513213_65434360536840613_66445444">
     <map:value xsi:type="xs:float">0.289406</map:value>
     </map:entry>
  </map:map>
  </map:value>
</map:entry>
</map:map>
)

如您所见,我的映射键是“doc”,返回的出现被复制到此键“doc”中,为sub-map。 子地图的“&lt;map:entry key=”有一个大的URL作为key。

当查询返回一个事件/结果时,它很好。问题是当返回数百个结果时,性能变得非常糟糕。有没有其他选择?我只关心值“0.289406”而不是大键。

我可以直接将值单独获取到任何 xml 元素中吗:-

<doc>
 <valu>0.289406</valu>
 <valu>-0.23456</valu>
 <valu>0.3665</valu>
</doc>

而不是使用地图或任何迭代??

【问题讨论】:

  • 请发布一些示例数据以供使用。
  • err.. 上面的地图是从数据库中获取的,它是样本。 $doc-map:=cts:element-value-co-occurences("xdmp:document",..,"map","collat​​ion",$query) 为查询从 db 中获取了上述地图。

标签: xpath xquery bigdata marklogic


【解决方案1】:

数百个结果应该没问题。我定期处理地图中的数千到数百万个结果。

所以我怀疑发生了其他事情。如果你能想出一个可重现的测试用例,也许有人能发现问题。

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多