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

Using Java API for Container Constraint (nested)

我正在使用 MarkLogic v8。

我正在尝试将结构化查询的容器约束应用于 return 仅在元素 c[=36= 中具有值 x 的文档](嵌套在元素 ab 中)。

queryBuilder.containerConstraint() 采用选项名称参数和 StructuredQueryDefinition。我的选项如下所示:

<options xmlns='http://marklogic.com/appservices/search'>
    <constraint name='language'>
        <element name=\"name\" ns=\"\"/>
    </constraint>
</options>
  1. "name" 是包含我要引用的值的最内层元素 (c) 的名称。这是应该如何构造选项,还是应该 'name' 而不是最外层元素的名称?

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

  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)

这似乎符合我的要求。