我有一个XML存储在Marklogic中,如下所述
<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>
标签创建元素范围索引。
值查询等效于 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...-
希望有帮助,