我在正确设置索引时遇到一些问题。 我正在尝试查询一个(80Mb 大)文档,该文档有很多“ map ”属性,例如
<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”对象。
我已在 map 元素上为此文档创建了一个片段根。
map 元素上的元素范围索引。
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 电源...所以我们需要索引...
查询给我一个错误,例如:
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"), "*")
未找到索引:字符串元素属性范围索引... 不知道下一步该去哪里?
我找不到那么多关于设置特定范围索引的文档/工作示例......
最佳答案
雨果:
MarkLogic 的一些最佳实践是:
- 将文档视为关系行的等效项,而不是关系表的等效项。
- 在可能的情况下进行反规范化,而不是根据请求进行聚合。
根据上面的描述,我想知道是否可以将每个 wijk 对象存储在单独的文档中,并将 wijk 对象的 ppc6 对象存储在 wijk 文档中。
如果这不可行,另一种方法是将每个 wijk 和 ppc6 对象存储在其自己的文档中,在 ppc6 文档中的 wijk 的外键上放置范围索引,并按以下方式聚合
- 查询 wijk 对象
- 将 wijk 对象放入 map
- 将 wijk 对象的主键提取为值序列
- 使用主键序列作为 ppc6 文档中外键的范围查询的值列表。
希望有帮助,
埃里克·亨纳姆
关于xpath - Marklogic索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917274/