繁体   English   中英

marklogic 8-如何明智地搜索馆藏

[英]marklogic 8 - How to search collection wise

我已经在我的查询控制台中尝试了下面提到的Xquery,但是我需要从集合中搜索数据吗?

let $value1 := "antony"
let $value2 := "cse"
for $uri1 in cts:uris((),(), (  
    cts:element-query(xs:QName("P"),
      cts:and-query((
          cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value1),
          cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value2)
      ))
    )
))
let $xml := doc($uri1)
return $xml//PS/P [@name eq "volume"]/@value

请建议我如何在上述XQuery中添加集合?

首先我要说的是,由于您最终想要的是文档而不是URI,因此直接使用cts:search会更有效。 如果要避免过滤的开销,可以添加“未过滤”选项,例如:

let $value1  := "antony"
let $value2 := "cse"
return
cts:search( doc(), 
  cts:element-query(xs:QName("P"),
    cts:and-query((
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value1),
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value2)
    ))
  ), "unfiltered"
)//PS/P[@name eq "volume"]/@value

或者,因为您只关心/ PS / P元素:

cts:search( doc()//PS/P, 
  cts:element-query(xs:QName("P"),
    cts:and-query((
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),"antony"),
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),"cse")
    ))
  ), "unfiltered"
)[@name eq "volume"]/@value

要在集合中进行搜索,请将doc()替换为collection(“ yourcollection”):

cts:search( collection("yourcollection")//PS/P, 
  cts:element-query(xs:QName("P"),
    cts:and-query((
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),"antony"),
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),"cse")
    ))
  ), "unfiltered"
)[@name eq "volume"]/@value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM