MarkLogic - 扩展搜索,return 特定对象节点
MarkLogic - Extending the Search, return specific object node
我是 MarkLogic 和 XQuery 的新手。
我正在尝试创建一个 Search Transform
到 return,实际 JSON 从文档的特定级别
这是一个示例文档。
我想 return 整个 JSON 基于 segment
无论搜索结果在较低级别的哪个位置(成绩单、主题、横幅等,)
在查询控制台中飞溅...
search:search('trump')/search:result/search:snippet//@path
成功Returns对象的path
,包裹在fn:doc
fn:doc("/20170120/NBCNightlyNews/1830/nbc")/array-node("segments")/object-node()1/transcript/node("00:00:02")/text("message")
然而,
当我尝试在转换中实现类似的 Xpath 表达式时。
let $root := $content/*
return document {$root/search:result/search:snippet//@path}
并尝试执行它(无论 xpath 表达式是什么,除了 $root 本身还有一个不同的失败)它 returns
<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>
如果我可以转换为 return 路径,我可以继续尝试评估路径,获取适当的 JSON 部分和 return.
有什么想法吗?
您似乎改为编写了 a REST API service extension to do searches. If so, consider using the /v1/search 端点——这样您就可以使用 built-in 功能。
我不确定你到底想做什么:你想return文档"segment"部分的片段,还是return 文档的完整部分,无论匹配项在哪里?
如果是前者,您可以 customize the snippeting 通过指定匹配的首选来源。
如果是后者,您可以编写 a search transform,这样您就可以完全控制 return 编辑的内容。
无论是使用 REST API 还是调用搜索 API,这些选项都可用(我认为相同)。
我是 MarkLogic 和 XQuery 的新手。
我正在尝试创建一个 Search Transform
到 return,实际 JSON 从文档的特定级别
这是一个示例文档。
我想 return 整个 JSON 基于 segment
无论搜索结果在较低级别的哪个位置(成绩单、主题、横幅等,)
在查询控制台中飞溅...
search:search('trump')/search:result/search:snippet//@path
成功Returns对象的path
,包裹在fn:doc
fn:doc("/20170120/NBCNightlyNews/1830/nbc")/array-node("segments")/object-node()1/transcript/node("00:00:02")/text("message")
然而,
当我尝试在转换中实现类似的 Xpath 表达式时。
let $root := $content/*
return document {$root/search:result/search:snippet//@path}
并尝试执行它(无论 xpath 表达式是什么,除了 $root 本身还有一个不同的失败)它 returns
<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>
如果我可以转换为 return 路径,我可以继续尝试评估路径,获取适当的 JSON 部分和 return.
有什么想法吗?
您似乎改为编写了 a REST API service extension to do searches. If so, consider using the /v1/search 端点——这样您就可以使用 built-in 功能。
我不确定你到底想做什么:你想return文档"segment"部分的片段,还是return 文档的完整部分,无论匹配项在哪里?
如果是前者,您可以 customize the snippeting 通过指定匹配的首选来源。
如果是后者,您可以编写 a search transform,这样您就可以完全控制 return 编辑的内容。
无论是使用 REST API 还是调用搜索 API,这些选项都可用(我认为相同)。