密钥值对使用Marklogic Java API进行搜索

时间:2018-04-20 10:44:17

标签: marklogic marklogic-8 marklogic-9

我在Marklogic中存储了一个XML,如下所述

<employee>
    <name>Shiv</name>
    <address>.....</address>
    <phone>......</phone>
    <email>...</email>
</employee>

所以我的要求是,我想使用marklogic java api搜索<name>标记及其值为Shiv

我尝试使用KeyValueQueryDefinition并且工作正常但KeyValueQueryDefinition现已弃用,因此我无法使用此功能。

QueryManager queryMgr = client.newQueryManager();
KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition();
query.put(queryMgr.newElementLocator(new QName("name")), "Shiv");
SearchHandle resultsHandle = new SearchHandle();
queryMgr.search(query, resultsHandle);

所以我需要替代满足上述要求的KeyValueQueryDefinition,我也不想为<name>代码创建元素范围索引。

1 个答案:

答案 0 :(得分:4)

值查询等同于KeyValueQueryDefinition。以下几行应该有效:

QueryManager queryMgr = client.newQueryManager();
StructuredQueryBuilder qryBldr = new StructuredQueryBuilder();
StructuredQueryDefinition query = qryBldr.value(qryBldr.element("name"), "Shiv");
SearchHandle resultsHandle = new SearchHandle();
queryMgr.search(query, resultsHandle);

请参阅:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#value-com.marklogic.client.query.StructuredQueryBuilder.TextIndex-java.lang.String...-

希望有帮助,