我需要实现一个Node Web服务,该服务基于已过滤的搜索查询通过MarkLogic REST API读取多达1,000,000个文档,并将结果转换为存档。
一次读取1,000,000个文档以及内容转换会导致超时。我的想法是使用分页。但是,对批量导出的过滤搜索结果进行分页是否有意义?
我的理解是,筛选搜索不支持有效的深度分页,因为它每次都需要从头开始。
我知道过滤后的搜索查询一开始并没有表现力,但这是一个单独的问题。
感谢您的建议。
答案 0 :(得分:1)
如果您必须进行过滤运行,我将使搜索仅返回uri。您可能仍需要大量增加超时时间,但是您不必冒吹缓存的风险,因为实际上保存100万份文档的内容是不可能的。您可以调用自定义代码,如下所示:
cts:search(collection(), $myQuery, "filtered") ! xdmp:node-uri(.)
一旦您将uris的完整列表都列出来,就可以翻阅uris,并分批提取它们。
HTH!