在MarkLogic中对已过滤的搜索结果进行深度分页

时间:2020-06-02 18:39:07

标签: marklogic

我需要实现一个Node Web服务,该服务基于已过滤的搜索查询通过MarkLogic REST API读取多达1,000,000个文档,并将结果转换为存档。

一次读取1,000,000个文档以及内容转换会导致超时。我的想法是使用分页。但是,对批量导出的过滤搜索结果进行分页是否有意义?

我的理解是,筛选搜索不支持有效的深度分页,因为它每次都需要从头开始。

我知道过滤后的搜索查询一开始并没有表现力,但这是一个单独的问题。

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

如果您必须进行过滤运行,我将使搜索仅返回uri。您可能仍需要大量增加超时时间,但是您不必冒吹缓存的风险,因为实际上保存100万份文档的内容是不可能的。您可以调用自定义代码,如下所示:

cts:search(collection(), $myQuery, "filtered") ! xdmp:node-uri(.)

一旦您将uris的完整列表都列出来,就可以翻阅uris,并分批提取它们。

HTH!