gpt4 book ai didi

xquery - MarkLogic - 扩展搜索,返回特定对象节点

转载 作者:行者123 更新时间:2023-12-02 09:42:25 25 4
gpt4 key购买 nike

我对 MarkLogic 和 XQuery 非常陌生。

我正在尝试创建一个搜索转换来返回文档特定级别的实际 JSON

这是一个示例文档。

enter image description here

我想返回整个基于 JSON 的,无论搜索结果位于较低级别的哪个位置(文字记录、主题、横幅等)

<小时/>

在查询控制台中闲逛...

search:search('trump')/search:result/search:snippet//@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 本身之外,还有不同的失败)它返回

<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 部分并返回。

有什么想法吗?

最佳答案

看起来你已经写了a REST API service extension进行搜索。如果是这样,请考虑使用 /v1/search端点 - 这样您就可以使用内置功能。

我不确定您到底想要做什么:您是否想要从文档的“段”部分返回片段,或者是否想要返回文档的完整部分,无论文档的位置在哪里比赛是?

如果是前者,您可以customize the snippeting通过指定首选匹配源。

如果是后者,你可以写a search transform这将使您完全控制返回的内容。

无论是使用 REST API 还是调用搜索 API,这些选项都是可用的(而且我认为是相同的)。

关于xquery - MarkLogic - 扩展搜索,返回特定对象节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com