Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Marklogic中cts:search和cts:URI之间的不一致性_Marklogic - Fatal编程技术网

Marklogic中cts:search和cts:URI之间的不一致性

Marklogic中cts:search和cts:URI之间的不一致性,marklogic,Marklogic,我有以下两个文件 doc1.xml <root> <parent> <child id="1"/> <child id="2" level="first"/> </parent> </root> doc2.xml <root> <parent> <child id="2"/> <child id="1" level="first"/>

我有以下两个文件

doc1.xml
<root>
  <parent>
    <child id="1"/>
    <child id="2" level="first"/>
  </parent>
</root>

doc2.xml
<root>
  <parent>
    <child id="2"/>
    <child id="1" level="first"/>
  </parent>
</root>
返回第一个文档

但当我跑步时:

 cts:uris((),(),cts:element-query(xs:QName("child"),
                                        cts:and-query((cts:element-attribute-value-query(xs:QName("child"),xs:QName("id"),"1"),
                                        cts:element-attribute-value-query(xs:QName("child"),xs:QName("level"),"first")))))
返回两个文档的URI


请帮助我理解这种不一致性

过滤。当您运行
cts:search
时,默认情况下,它通过检查从索引解析步骤返回的文档来过滤假阳性结果。但是,
cts:uri
只能在未经筛选的情况下运行,因此它总是返回索引解析步骤的所有结果

我怀疑如果您包括
cts:search
选项以运行未筛选,您的结果将是相同的

cts:search(/root,
  cts:element-query(xs:QName("child"),
    cts:and-query((
      cts:element-attribute-value-query(xs:QName("child"),xs:QName("id"),"1"),
      cts:element-attribute-value-query(xs:QName("child"),xs:QName("level"),"first")))),
  'unfiltered')

有关更多详细信息,请参见MarkLogic。

另请参见-并了解如何为放入数据库的XML编制索引。对于这个特定的查询,启用元素属性值的位置可能会有所帮助,但最好安排XML,使其不依赖于并行属性。例如,将
child[@level=“first”]
更改为
child1
,查询就会变得很容易解决。谢谢。我无法想象cts:uri会未经过滤地运行。否则,它就非常清楚了。
cts:search(/root,
  cts:element-query(xs:QName("child"),
    cts:and-query((
      cts:element-attribute-value-query(xs:QName("child"),xs:QName("id"),"1"),
      cts:element-attribute-value-query(xs:QName("child"),xs:QName("level"),"first")))),
  'unfiltered')