2016-07-22 108 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