[英]How to match space in MarkLogic using CTS functions?
我需要搜索其属性中带有空格" "
那些元素。
例如:
<unit href="http:xxxx/unit/2 ">
假设上面的代码在最后一个href属性中有空格。
我已经使用FLOWER
查询完成了此操作。 但是我需要使用CTS函数来完成。 请提出建议。
对于FLOWER
查询,我尝试了以下方法:
let $x := (
for $d in doc()
order by $d//id
return
for $attribute in data($d//@href)
return
if (fn:contains($attribute," ")) then
<td>{(concat( "id = " , $d//id) ,", data =", $attribute)}</td>
else ()
)
return <tr>{$x}</tr>
一切正常。
对于CTS
我尝试过
let $query :=
cts:element-attribute-value-query(xs:QName("methodology"),
xs:QName("href"),
xs:string(" "),
"wildcarded")
let $search := cts:search(doc(), $query)
return fn:count($search)
您的查询正在寻找“”作为属性值的全部。 如果要查找包含空格的属性,则需要使用通配符。 但是,由于除了精确值查询(按照定义,它们没有通配符)之外没有空白索引,因此您将不会对该查询获得很多索引支持,因此您需要将其作为过滤搜索来运行(您在上面的代码中具有的内容)有很多误报。
您最好在属性上创建一个字符串范围索引,然后对该属性进行值匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.