MarkLogic Search返回文档集合

时间:2018-09-13 10:15:51

标签: java marklogic

如果您使用的是 search api ,是否可以返回文档的集合

在该用例的Query Options Reference中找不到选项。

现在,我将不得不围绕搜索api构建自己的包装器,并自己找到搜索结果的集合:

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";

let $docs := search:search("query")

return for $doc in $docs
return xdmp:node-collections(doc($doc/search:result/@uri))

编辑:marklogic Java客户端api也应该可用。

2 个答案:

答案 0 :(得分:2)

如果您使用的是MarkLogic REST API,则可以使用category上的/v1/search参数提取metadata而不是内容。如果要将其混合到搜索结果中,则最好使用/v1/search参数在transform上使用REST转换。另请参阅:

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

HTH!

答案 1 :(得分:0)

要仅获取文档元数据(例如集合)而不是文档内容,请编写并安装服务器端转换,该转换将在文档上调用xdmp:node-collections()并构造一个替换文档。参见:

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

然后调用QueryDefinition.setResponseTransform()方法以指定服务器端转换:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/QueryDefinition.html#setResponseTransform-com.marklogic.client.document.ServerTransform-

在将查询定义传递给DocumentManager.search()方法之前:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/document/DocumentManager.html#search-com.marklogic.client.query.QueryDefinition-long-

作为脚注,通过在搜索之前调用DocumentManager.setMetadataCategories(),DocumentManager.search()方法可以在单个请求中检索文档元数据和内容,而无需服务器端转换。参见:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/document/DocumentManager.html#setMetadataCategories-java.util.Set-

希望有帮助,