使用 Java API 进行容器约束(嵌套)
Using Java API for Container Constraint (nested)
我正在使用 MarkLogic v8。
我正在尝试将结构化查询的容器约束应用于 return 仅在元素 c[=36= 中具有值 x 的文档](嵌套在元素 a 和 b 中)。
queryBuilder.containerConstraint() 采用选项名称参数和 StructuredQueryDefinition。我的选项如下所示:
<options xmlns='http://marklogic.com/appservices/search'>
<constraint name='language'>
<element name=\"name\" ns=\"\"/>
</constraint>
</options>
"name" 是包含我要引用的值的最内层元素 (c) 的名称。这是应该如何构造选项,还是应该 'name' 而不是最外层元素的名称?
应该如何构造 StructuredQueryDefinition(被 containerConstraint() 接受为参数)?我应该写原始的XML,还是要传入构造方法?
有更好的方法吗?我已经有一个有效的术语搜索,我只需要能够通过文档中设置的 属性 进行过滤。
我想我找到了答案:
选项如下:
<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)
这似乎符合我的要求。
我正在使用 MarkLogic v8。
我正在尝试将结构化查询的容器约束应用于 return 仅在元素 c[=36= 中具有值 x 的文档](嵌套在元素 a 和 b 中)。
queryBuilder.containerConstraint() 采用选项名称参数和 StructuredQueryDefinition。我的选项如下所示:
<options xmlns='http://marklogic.com/appservices/search'>
<constraint name='language'>
<element name=\"name\" ns=\"\"/>
</constraint>
</options>
"name" 是包含我要引用的值的最内层元素 (c) 的名称。这是应该如何构造选项,还是应该 'name' 而不是最外层元素的名称?
应该如何构造 StructuredQueryDefinition(被 containerConstraint() 接受为参数)?我应该写原始的XML,还是要传入构造方法?
有更好的方法吗?我已经有一个有效的术语搜索,我只需要能够通过文档中设置的 属性 进行过滤。
我想我找到了答案:
选项如下:
<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)
这似乎符合我的要求。