Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath Marklogic索引故障_Xpath_Indexing_Marklogic - Fatal编程技术网

Xpath Marklogic索引故障

Xpath Marklogic索引故障,xpath,indexing,marklogic,Xpath,Indexing,Marklogic,我在获取正确的索引时遇到了一些问题。 我试图查询一个(大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</dateCrea

我在获取正确的索引时遇到了一些问题。 我试图查询一个(大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>
我的问题是:

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"), "*")
找不到索引:字符串元素属性范围索引用于。。。 不知道下一步该去哪里

我找不到那么多关于设置特定范围索引的文档/工作示例…

Hugo:

MarkLogic的一些最佳实践包括:

  • 将文档视为关系行的等价物,而不是关系表的等价物
  • 在可能的情况下进行非规范化,而不是根据请求进行聚合
根据上面的描述,我想知道是否可以将每个wijk对象存储在单独的文档中,并将wijk对象的ppc6对象存储在wijk文档中

如果不可行,另一种方法是将每个wijk和ppc6对象存储在其自己的文档中,在ppc6文档中wijk的外键上放置范围索引,并通过

  • 查询wijk对象
  • 将wijk对象放在地图中
  • 将wijk对象的主键提取为值序列
  • 使用主键序列作为ppc6文档中外键范围查询的值列表
  • 希望有帮助


    埃里克·亨纳姆(Erik Hennum)

    是否应该拆分80-MB的文档?是的,可能。如前所述,MarkLogic希望文档的行为类似于行,而不是表。另一种设计是创建一个
    map:map
    项并将其存储为文档,但这是一种不同寻常的方法,我不确定它是否真的合适。例如,在加载映射的每个查询中都会有显著的额外延迟

    你的范围指数有什么问题?名称空间。属性位于空命名空间中,而不是父元素命名空间中。默认元素命名空间声明(
    xmlns=“…”
    )不适用于属性

    另外,在调用
    cts:element属性值时,需要为父QName提供正确的名称空间。并删除“*”参数:该参数用于
    cts:element-attribute-value-match
    ,它根据词典匹配通配符。如果需要所有值,则使用空序列调用
    cts:element属性值
    更有效


    最后,查看及其
    map
    选项。这可能正是你所需要的。

    嗨,埃里克,谢谢你的想法,这正是我试图解决的问题。但这不是我主要问题的答案。在这种情况下,hugoQuotes烧死了我……事实上,我的问题是名称空间问题。我在控制台的定义中添加了引号。在您的回答中,属性没有名称空间也是正确的,因此我们可以将其留空。我不需要地图上的元素范围索引。片段根也不喜欢引号。元素/父元素确实需要一个名称空间,所以我现在的查询是cts:element属性值(xs:QName(“op:map”)、xs:QName(“wijk_id”)、“”),非常快速。
    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"), "*")