Xquery 移动到cts的位置:搜索
鉴于此查询:Xquery 移动到cts的位置:搜索,xquery,marklogic,cts-search,Xquery,Marklogic,Cts Search,鉴于此查询: for $d in cts:search( fn:doc(), cts:and-query( ( cts:collection-query(('InProgress_Audit')) ) )) where not(fn:contains($d//TitleDate/text(),"Z")) return <p>{docum
for $d in cts:search(
fn:doc(),
cts:and-query(
(
cts:collection-query(('InProgress_Audit'))
)
))
where not(fn:contains($d//TitleDate/text(),"Z"))
return <p>{document-uri($d)}</p>
用于cts中的$d:search(
fn:doc(),
cts:和查询(
(
cts:集合查询(('InProgress\u Audit'))
)
))
其中不包含(fn:contains($d//TitleDate/text(),“Z”))
返回{documenturi($d)}
如何将“where”约束移动到CTS搜索查询中?这将使用
CTS:query
应用约束:
for $d in cts:search(
fn:doc(),
cts:and-not-query(
cts:collection-query('InProgress_Audit'),
cts:element-query(xs:QName('TitleDate'),
cts:word-query('*Z*', 'wildcarded'))
))
return <p>{document-uri($d)}</p>
使用cts:uri将比多次重复调用document-uri()
更快。但是,您需要在设置中启用URI词典选项。将所有这些放在一起,查询将如下所示:
cts:uris((), 'document',
cts:and-not-query((
cts:collection-query('InProgress_Audit'),
cts:element-value-query(xs:QName('TitleDate'),
'*Z*', 'wildcarded')
))) ! element p { . }
回答很好,但是
cts:element-value查询
可能比嵌套的cts:element查询
和cts:word查询
执行得更好。另外,鉴于对文档uri
的调用,使用cts:uri
可能比使用cts:search
更好:举个例子。
cts:uris((), 'document',
cts:and-not-query((
cts:collection-query('InProgress_Audit'),
cts:element-value-query(xs:QName('TitleDate'),
'*Z*', 'wildcarded')
))) ! element p { . }