我正在使用MarkLogic v8。
我正在尝试对结构化查询应用容器约束,以仅返回元素 c 中具有值 x 的文档(嵌套在元素 a 和 b )。
queryBuilder.containerConstraint()获取选项名称和StructuredQueryDefinition的参数。我的选择如下:
<options xmlns='http://marklogic.com/appservices/search'>
<constraint name='language'>
<element name=\"name\" ns=\"\"/>
</constraint>
</options>
&#34;名称&#34;是包含我想要引用的值的最内层元素( c )的名称。这是应该如何构建选项,还是应该命名&#39;而是最外层元素的名称?
如何构造StructuredQueryDefinition(由 containerConstraint()接受为参数)?我应该编写原始XML,还是要传递构造方法?
有更好的方法吗?我已经有了一个有效的术语搜索,我只需要能够按文档中的属性集进行过滤。
答案 0 :(得分:3)
我想我找到了答案:
选项如下:
<search:options
xmlns:search='http://marklogic.com/appservices/search'>
<search:constraint name='language'>
<search:word>
<search:element name='name' ns=''/>
</search:word>
</search:constraint>
</search:options>
然后调用Word Constraint中的选项:
queryBuilder.wordConstraint("language", MY_LANGUAGE)
这似乎做了我想要的。