用于目录查询的Marklogic Rest API

时间:2016-07-22 08:45:20

标签: xquery marklogic marklogic-8

我有以下用于获取目录文档的XQuery。

xquery version "1.0-ml";

cts:search(fn:collection(), cts:directory-query("/Path/To/Docs/", "infinity"))

现在我需要将其转换为REST调用,但我似乎无法按照此页面上的文档对其进行破解。

https://docs.marklogic.com/REST/GET/v1/search

更新

使用Jersey REST API,尝试了这个但得到了406错误

String query =  "{\"queries\":[ {\"directory-query\":{\"uri\":[\"/Path/to/Docs/\"]},\"infinite\":true} ]}";

String encodedQuery = URLEncoder.encode(query, "UTF-8");
WebTarget target = searchWebTarget.queryParam("structuredQuery", encodedQuery);

final Response response = target.request().get();

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

正如David所说,您不需要为此目的使用结构化查询,但如果您有将来需要:

我相信你最初的问题是这不是一个结构良好的结构化查询:

{\"queries\":[ {\"directory-query\":{\"uri\":[\"/Path/to/Docs/\"]},\"infinite\":true} ]}

您错过了顶级“查询”属性。您可以在此处找到使用目录查询的完全形成的结构化查询的示例:

http://docs.marklogic.com/guide/search-dev/structured-query#id_97452

此外,您可能已经知道,但是有一个原生Java API位于REST API之上。您可以在此处了解有关此API的更多信息:

https://docs.marklogic.com/javadoc/client/index.html

http://docs.marklogic.com/guide/java

答案 1 :(得分:3)

按目录约束是直接在搜索API上的查询参数。没有其他符号需要。

请参阅此处的文档:https://docs.marklogic.com/REST/GET/v1/search