gpt4 book ai didi

marklogic - MarkLogic cts.search 中的路径表达式

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

我的印象是 MarkLogic 中的 XQuery 和服务器端 JavaScript API 基本上是相同的。但 cts:searchcts.search 似乎有很大差异。在 cts:search 中,我能够指定要搜索和返回的元素。例如,我可以从食谱书中检索所有使用肉桂作为成分的食谱:

cts:search(//recipe, cts:element-word-query(xs:QName('ingredients'), 'cinnamon'))

cts.search 不接受路径表达式,并将返回整个食谱文档:

cts.search(cts.elementWordQuery(xs.QName('ingredients'), 'cinnamon'))

同样的问题已在 MarkLogic 邮件列表中提出,但我没有看到答案:https://developer.marklogic.com/pipermail/general/2015-March/016508.html

下面是一个最小的例子:

<book>
<recipe>
<ingredients>cinnamon, peppermint</ingredients>
<instruction/>
</recipe>
<recipe>
<ingredients>sugar, peppermint</ingredients>
<instruction/>
</recipe>
<recipe>
<ingredients>coconut oil</ingredients>
<instruction/>
</recipe>
</book>

xquery 是:

cts:search(//recipe, cts:element-word-query(xs:QName('ingredients'), 'cinnamon'))

和响应:

<recipe>
<ingredients>cinnamon, peppermint</ingredients>
<instruction></instruction>
</recipe>

最佳答案

出现这种情况是有技术原因的。 XQuery 中的 cts:search 函数实际上不是一个函数,而是一种具有函数语法的特殊形式。这意味着第一个参数实际上并未被求值,然后传递给函数(如果您考虑一下,这将是一种非常低效的处理方式!)。在 Javascript 中,cts.search 函数是一个真实的函数。为了避免效率低下,我们删除了第一个参数,因此您需要从结果中提取您关心的部分。

如果您希望将结果集限制为元素 recipe 内的结果,请使用 cts:element-query(xs:QName("recipe") 包装您的查询,$您的查询)

关于marklogic - MarkLogic cts.search 中的路径表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283943/

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