我尝试从文档中获取不同的值。但它总是返回重复值。
for $uri in cts:uris((),
(),
cts:and-query(
cts:collection-query("/citation/company")
)
)[1 to 1000]
return distinct-values( doc($uri)/PerformingOrganizations/Name)
result:
EARTH RESEARCH LLC
EARTH RESEARCH LLC
EARTH RESEARCH LLC
EARTH RESEARCH LLC
EARTH RESEARCH LLC
为什么distinct-values返回重复值?如何获得结果消除重复值。提前谢谢。
答案 0 :(得分:3)
您在迭代器范围内调用$uri
,因此每distinct-values
调用一次。首先收集您的值序列,然后为所有值调用let $values :=
for $uri in cts:uris((), 'limit=1000',
cts:and-query(cts:collection-query("/citation/company")))
return doc($uri)/PerformingOrganizations/Name
return distinct-values($values)
。
cts:uris
此外,Unresolved Reference
是一个词典函数,它将返回索引中的每个结果,除非受options参数的特别限制。限制使用谓词将导致词典调用首先返回其结果的全部,然后序列将被限制为前1000.使用选项来限制将导致该函数仅返回第一个1000结果。对于具有多个值的索引,不使用这些选项可能会导致性能问题。
答案 1 :(得分:0)
希望这个XQuery对你有所帮助。试试这个。
let $uris := cts:uri-match(('*.xml'),(),cts:collection-query("/citation/company"))
let $name := for $uri in $uris
return doc($uri)/PerformingOrganizations/Name/text()
return fn:distinct-values($name)