如何解决如何在 Marklogic 中限制特定集合搜索的搜索 API?
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint>
<collection>'/mycollection'</collection>
</constraint>
</options>
let $options-1 :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix="/mycollection"/>
</constraint>
</options>
return
search:search('Text',$options)
这两个选项我都试过了,但这都没有限制对特定集合 /mycollection
的搜索。
解决方法
您定义了一个名为 collection
的约束并将该约束的前缀配置为 /mycollection
,但是您尚未将该约束应用于您的搜索。
约束不会自动应用于您的搜索,它们只是定义可以应用的搜索词和选项。
如果您查看 Collection Constraint Example,他们会注意到:
如果您在集合约束的定义中包含前缀属性,则集合名称源自与约束值连接的前缀。
因此,为了让您应用限制集合 /mycollection
的约束,我会这样做:
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">
<constraint name="collection">
<collection />
</constraint>
</options>
return
search:search("collection:/mycollection " ||'Text',$options)
如果您的所有集合都以前导斜杠开头,您可以将其设置为前缀,然后只应用不带前导斜杠的集合的“名称”:
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">
<constraint name="collection">
<collection prefix="/"/>
</constraint>
</options>
return
search:search("collection:mycollection "||'Text',$options)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。