使用MarkLogic Java API搜索与单个XML元素(键)关联的多个值

使用MarkLogic Java API搜索与单个XML元素(键)关联的多个值,marklogic,marklogic-8,marklogic-9,Marklogic,Marklogic 8,Marklogic 9,如前所述,我在Marklogic中存储了多个文档 <testData> <datatype> <datatypename>datatypename1</datatypename> <datatype>datatype1</datatype> </datatype> <datavalue> <code>code1</code> <value&

如前所述,我在Marklogic中存储了多个文档

<testData>
<datatype>
    <datatypename>datatypename1</datatypename>
    <datatype>datatype1</datatype>
</datatype>
<datavalue>
    <code>code1</code>
    <value>value1</value>
</datavalue>
<datavalue>
    <code>code2</code>
    <value>value2</value>
</datavalue>
<datavalue>
    <code>code3</code>
    <value>value3</value>
</datavalue>
</testData>
要求:我想使用Maklogic Java API搜索具有相同键但不同值的所有文档

示例:在上面的XML
中,元素具有多个值,如
code1
code2

我试过下面的代码

        QueryManager manager = client.newQueryManager();
        StructuredQueryBuilder queryBuilder = new StructuredQueryBuilder();
        StructuredQueryDefinition queryDefinition1 = queryBuilder.value(queryBuilder.element("code"), "code1");
        StructuredQueryDefinition queryDefinition2 = queryBuilder.value(queryBuilder.element("code"), "code2");

        StructuredQueryDefinition definition = queryBuilder.and(queryDefinition1, queryDefinition2);

        SearchHandle searchHandle = new SearchHandle();
        manager.search(definition, searchHandle);
这里,我对每个元素值使用多个
StructuredQueryDefinition
,比如
queryDefinition1
用于
code1
queryDefinition2
对于
code2
我不想这样做,它应该返回一个文档,其中
code
作为元素名,
code1
code2
作为其值

StructuredQueryDefinition queryDefinition1 = queryBuilder.value(queryBuilder.element("code"), "code1 AND code2");

请告诉我是否可以使用Marklogic Java API,而不为
code
元素创建元素范围索引。

我想您可以通过XPath查询:/testdata/[count(不同值(./datavalue/code/text())>1]来实现这一点。通常,最好尽可能在字符串之外表示查询的结构。queryBuilder.and()的第一个示例是以什么方式表示的未能完成您想要的操作?如果您查看上面的搜索代码…这里我使用queryDefinition1指定元素值code1,再次使用queryDefinition2指定值code2,然后我使用queryBuilder.and(queryDefinition1,queryDefinition2),因此,我不想像这样执行和操作…我想像queryBuilder.value那样执行(queryBuilder.element(“代码”)、“代码1和代码2”)