我想在for循环中创建cts:or-query
。我怎样才能做到这一点?
我的逻辑的一个例子:
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')
)
)
答案 0 :(得分:6)
对于这个特殊的例子,最好写一个猎枪-OR:
cts:element-value-query(xs:QName("ts:tag"), xs:string(1 to 5))
这将表现得像or-query,但效率会更高一些。请注意,我将cts:element-query
更改为元素值查询。这可能是您想要的,也可能不是,但每个查询词应该尽可能精确。
您还可以使用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]