使用Java API进行容器约束(嵌套)

时间:2017-02-06 18:51:06

标签: xquery marklogic marklogic-8

我正在使用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>
  1. &#34;名称&#34;是包含我想要引用的值的最内层元素( c )的名称。这是应该如何构建选项,还是应该命名&#39;而是最外层元素的名称?

  2. 如何构造StructuredQueryDefinition(由 containerConstraint()接受为参数)?我应该编写原始XML,还是要传递构造方法?

  3. 有更好的方法吗?我已经有了一个有效的术语搜索,我只需要能够按文档中的属性集进行过滤。

1 个答案:

答案 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)

这似乎做了我想要的。