2016-07-22 105 views
4

我有以下用于为目录获取文档的XQuery。用于目录查询的Marklogic Rest API

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(); 

任何想法?

+0

你能否详细说明你尝试过什么到目前为止? – grtjn

+0

用我到目前为止所尝试的更新,我从这里找到http://stackoverflow.com/questions/30189908/marklogic-400-bad-request –

回答

3

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

在这里看到的文档:https://docs.marklogic.com/REST/GET/v1/search

+0

当我发送此commadd https:// [marklogic-host]: 8801/v1/search?collection =&directory =/Path/to/Doc/ 我收到回复,但它返回的内容的URI不是以/ Path/to/Doc /开头,而是完全不同的东西 –

+0

提供一个与上面的xquery匹配的例子?上述Xquery的REST网址如何显示? –

+1

通过url编码目录路径解决。谢谢 –

6

正如大卫说,你不需要使用结构化查询用于此目的,但如果你有需要的未来:

我相信你原来的问题是,这不是一个格式良好的结构化查询:

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

您缺少顶级“查询”属性。你可以找到一个例子,这里使用目录查询完全形成结构化查询:

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

而且,你可能已经知道,但就是坐在REST API之上本地Java API。您可以了解更多关于此API在这里:

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

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