Xquery Marklogic cts:或循环中的查询
我想在for循环中创建一个Xquery Marklogic cts:或循环中的查询,xquery,marklogic,Xquery,Marklogic,我想在for循环中创建一个cts:或查询。我该怎么做 我的逻辑的一个例子: let $query := for $tag in (1,2,3,4,5) return myquery 我希望得到最终查询,例如: let $query := cts:or-query( ( cts:element-query(xs:QName("ts:tag"),'1'), cts:element-query(xs:QName("ts:tag"),'2'), cts:element-
cts:或查询。我该怎么做
我的逻辑的一个例子:
let $query := for $tag in (1,2,3,4,5)
return myquery
我希望得到最终查询,例如:
let $query := cts:or-query(
(
cts:element-query(xs:QName("ts:tag"),'1'),
cts:element-query(xs:QName("ts:tag"),'2'),
cts:element-query(xs:QName("ts:tag"),'3'),
cts:element-query(xs:QName("ts:tag"),'4'),
cts:element-query(xs:QName("ts:tag"),'5')
)
)
对于这个特定示例,最好编写一个猎枪或:
cts:element-value-query(xs:QName("ts:tag"), xs:string(1 to 5))
这将类似于or查询,但效率会更高一些。注意,我将您的cts:element查询
更改为元素值查询。这可能是您想要的,也可能不是您想要的,但是每个查询词都应该尽可能精确
还可以使用FLWOR表达式生成查询。这对于和查询语义很有用,而前面的技术对此没有帮助
let $query := cts:and-query(
for $i in ('dog', 'cat', 'rat')
return cts:word-query($i))
return cts:search(collection(), $query)[1 to 20]
这将有助于:
let $query := cts:or-query(
for $val in ('1', '2', '3', '4', '5')
return cts:element-query(xs:QName("ts:tag"), $val)
)
FLWOR循环返回cts:element查询的序列