這使用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>
有指數期權,以加快通配符搜索。您還可以使用TitleDate
的範圍索引與cts:element-range-index-query
結合使用,以進一步提高速度。
更新:作爲@mblakele在評論中指出,cts:element-value-query
可能比嵌套cts:element-query
/cts:word-query
更快:
cts:element-value-query(xs:QName('TitleDate'), '*Z*', 'wildcarded')
而且使用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 { . }
來源
2013-07-22 20:57:45
wst
優秀的答案,但一個'CTS:元素值query'可能比嵌套'CTS有更好的表現:元素query'和'CTS:字處理query'。另外,考慮到'document-uri'的調用,使用'cts:uris'而不是'cts:search'可能會更好:http://stackoverflow.com/a/17710863/908390有一個例子。 – mblakele