Xquery 如何使用通配符搜索面

Xquery 如何使用通配符搜索面,xquery,marklogic,Xquery,Marklogic,如何在搜索方面时返回以Ar*开头的所有值 xquery version "1.0-ml"; import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy"; let $options := <options xmlns="http://marklogic.com/appservices/search">

如何在搜索方面时返回以Ar*开头的所有值

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";

let $options := 
  <options xmlns="http://marklogic.com/appservices/search">
    <values name="entity">
      <range type="xs:string">
        <element ns="http://www.com/mynamespace" name="country" />
     </range>
    </values>
    <return-metrics>false</return-metrics>
  </options>
return search:values("entity", $options)
xquery版本“1.0-ml”;
导入模块命名空间搜索=”http://marklogic.com/appservices/search"
位于“/MarkLogic/appservices/search/search.xqy”;
let$options:=
假的
返回搜索:值(“实体”,$options)

我认为你不能用
搜索:值来实现这一点。它确实需要a,您可以为其指定
Ar
,但这只提供下限,而不是上限。如果您的文档片段中存在并发值,那么证明上限和下限的范围查询也不会有帮助

如果您可以直接使用cts函数,我会说使用。可以直接使用通配符的:

cts:value-match(cts:element-reference(fn:QName("http://www.com/mynamespace", "country"), "Ar*")

您可以构建一个执行@grtjn显示的
cts:value匹配
调用的函数,将其放入“start”函数中。下面是另一个示例,展示了@Dave Cassel推荐的技术: