使用MarkLogic Java API搜索与单个XML元素(键)关联的多个值
如前所述,我在Marklogic中存储了多个文档使用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&
<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”)