如何获取与Marklogic中的URI模式匹配的所有文档

时间:2014-12-11 07:19:15

标签: marklogic

我开始学习marklogic的java api,我想知道的是如何获得符合特定URI模式的所有文档。

例如我想从ML模块获取URI模式的所有文档 " /Downloads/Current/com.crc.eng.dollar / *"

2 个答案:

答案 0 :(得分:3)

您可以查询目录中的文档。以下几行应该有效:

DatabaseClient         client    = DatabaseClientFactory.newClient(...);
GenericDocumentManager docMgr    = client.newDocumentManager()
QueryManager           queryMgr  = client.newQueryManager();
StructuredQueryBuilder queryBldr = new StructuredQueryBuilder();

for (int pageNo=1; pageNo < YOUR_MAXIMUM_BEFORE_STOPPING; pageNo++) {
    SearchHandle resultsHandle = queryMgr.search(
        queryBldr.directory(true, "/Downloads/Current/com.crc.eng.dollar/"),
        new SearchHandle(),
        pageNo
        );

    MatchDocumentSummary[] docSummaries = resultsHandle.getMatchResults();
    for (MatchDocumentSummary docSummary: docSummaries) {
        InputStreamHandle docHandle = docMgr.read(
            docSummary.getUri(), new InputStreamHandle()
            );
        // ... do something with the document ...
    }

    if (docSummaries.length < queryMgr.getPageLength()) {
        break;
    }
}

为了提高查询效率,请将片段转换设置为空的查询选项保留为空,并在创建查询构建器时标识查询选项。

如果所有文档都是JSON或XML,则可以使用更具体的文档管理器。

顺便说一句,在MarkLogic 8中,查询将能够直接返回一页文档。

了解更多信息:

http://docs.marklogic.com/javadoc/client/index.html http://docs.marklogic.com/guide/java

答案 1 :(得分:0)

我使用的是XQuery API而不是Java,但也许您可以尝试使用cts:通过XCC进行uri-match(参见:http://docs.marklogic.com/cts:uri-match