You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic DHF流程中sourceQuery用自定义脚本报错求助

解决MarkLogic DHF自定义sourceQuery脚本报错问题

排查与修复步骤

  • 检查模块访问权限
    DHF运行时使用的服务用户(通常关联data-hub-role角色)需要拥有自定义模块目录的读取权限。确保/custom-modules/及其子文件的权限配置正确,允许该用户访问。可在QConsole执行以下命令验证权限:

    xdmp:document-get("/custom-modules/custom/my-source-query.xqy", ["no-content"])
    

    若返回权限错误,需调整目录权限设置。

  • 修正脚本返回结构
    DHF要求自定义sourceQuery脚本返回兼容分页逻辑的结果,不能直接返回原始URI列表。脚本需返回cts:search结果(DHF可自动处理分页),或包含value(结果集)、pageSize、start等参数的结构化对象。示例修正后的脚本:

    xquery version "1.0-ml";
    module namespace my-source = "http://example.com/custom/source";
    
    declare function my-source:sourceQuery() {
      // 替换为你的自定义逻辑,比如指定集合、条件筛选
      let $uris := cts:uris((), (), cts:collection-query("target-collection"))
      return fn:subsequence($uris, 1, 100) // 支持分页的结果片段
    };
    

    同时避免在脚本中使用依赖QConsole会话的特殊功能,DHF运行上下文与QConsole存在差异。

  • 验证脚本的REST兼容性
    DHF通过REST API执行sourceQuery,脚本不能包含QConsole专属语法。可通过REST API的/v1/eval端点测试脚本:

    curl -X POST -u [用户名]:[密码] http://[主机]:[端口]/v1/eval \
      -H "Content-Type: application/xquery" \
      -d "require('/custom-modules/custom/my-source-query.xqy').sourceQuery()"
    

    若该请求报错,说明脚本在REST上下文存在问题,需针对性调整。

  • 查看详细错误日志
    登录MarkLogic管理控制台,查看ErrorLog.txt或DHF专用日志,其中会包含RESTAPI-INVALIDREQ的具体错误原因(如模块找不到、语法错误、权限不足等),根据日志定位问题更高效。

  • 确认DHF版本兼容性
    部分旧版DHF对sourceQueryIsScript的支持存在限制,确保使用的DHF版本(如5.0及以上)支持自定义脚本作为sourceQuery,版本过低可考虑升级至稳定版。


内容的提问来源于stack exchange,提问作者Jyothi MS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:45:36