【发布时间】:2014-04-07 15:54:54
【问题描述】:
我在正确设置索引时遇到了一些问题。 我正在尝试查询具有很多“地图”属性的(80Mb 大)文档,例如
<oplage version="0.2" xmlns="http://www.nvsp.nl/oplage-mapping">
<meta-data>
<!--Generated by DIKW for NetwerkVSP STTip-->
<dateCreated>2014-04-03 13:23:16.885124</dateCreated>
</meta-data>
<map ppc6_id="1001WE" wijk_id="">
<bruto>0</bruto>
<stickers>0</stickers>
<netto>0</netto>
</map>
问题 1 实际上是:我需要拆分此文档吗?我需要增加内存列表大小的大小为 80MB。我在某处读到,一般来说,在内存中拥有大型文档并不是一个好主意。该文档在两种类型的对象“ppc6”对象和“wijk”对象之间保持 n:m 关系。我需要在我的“聚合”函数上获得良好的性能,该函数可以找到一起构成“wijk”对象的所有 ppc6 对象。通常有大约 500.000 个 ppc6 对象和 40.000 个“wijk”对象。
我已经在地图元素上为这个文档创建了一个片段根。
地图元素上的元素范围索引。
ppc6_id 和 wijk_id 上的属性范围索引
scalartype is string
parent namespace uri : "http://www.nvsp.nl/oplage-mapping"
parent local name : map
namespace uri equal to parent namespace (can this ever be *not* the same???)
localname : wijk_id,ppc6_id (not sure how to add more then one here?)
我的查询是这样的:
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace op = "http://www.nvsp.nl/oplage-mapping";
let $d := '/data/map/oplage-mapping.xml'
let $ids := fn:doc($d)//op:map/@wijk_id
let $u := fn:distinct-values($ids)
let $id2 := cts:element-attribute-values(xs:QName("map"),
xs:QName("wijk_id"),
"*")
return (fn:count($ids),fn:count($u))
我们首先沿着 xpath 路线走,但这不执行,我们需要 cts power...所以我们需要索引...
查询给了我一个错误,例如:
XDMP-ELEMATTRRIDXNOTFOUND: cts:element-attribute-values(fn:QName("", "map"), fn:QName("", "wijk_id"), "*") -- No string element-attribute range index for fn:QName("", "map") fn:QName("", "wijk_id") http://marklogic.com/collation/
on line 8
expr: cts:element-attribute-values(fn:QName("", "map"), fn:QName("", "wijk_id"), "*")
index not found: string element-attribute range index for ... 不知道下一步该去哪里?
我找不到那么多关于设置特定范围索引的文档/工作示例...
【问题讨论】: