【发布时间】:2017-02-15 21:34:56
【问题描述】:
我是 MarkLogic 和 XQuery 的新手。
我正在尝试创建一个Search Transform 以返回来自文档特定级别的实际 JSON
这是一个示例文档。
我想返回整个基于 JSON 的 segment,无论搜索结果在较低级别的哪个位置(成绩单、主题、横幅等)
在查询控制台中四处飞溅...
search:search('trump')/search:result/search:snippet//@path
成功返回对象的path,包裹在fn:doc中
fn:doc("/20170120/NBCNightlyNews/1830/nbc")/array-node("segments")/object-node()1/transcript/node("00:00:02")/文本(“消息”)
然而,
当我尝试在转换中实现类似的 Xpath 表达式时。
let $root := $content/*
return document {$root/search:result/search:snippet//@path}
并尝试执行它(无论 xpath 表达式是什么,除了简单的 $root 本身还有不同的失败)它返回
<error-response xmlns="http://marklogic.com/xdmp/error">
<status-code>400</status-code>
<status>Bad Request</status>
<message-code>XDMP-CHILDNODEKIND</message-code>
<message>
XDMP-CHILDNODEKIND: $root/search:result/search:snippet/descendant-or-self::node()/@path -- document nodes cannot have attribute node children
</message>
</error-response>
如果我可以让转换返回路径,然后我可以继续尝试评估路径,获取适当的 JSON 部分并返回。
有什么想法吗?
【问题讨论】: