gpt4 book ai didi

xml - MarkLogic:在 cts:search 中将字符串转换为路径表达式

转载 作者:数据小太阳 更新时间:2023-10-29 02:30:27 24 4
gpt4 key购买 nike

如何在 MarkLogic 中创建一个将 XPath 作为字符串然后将其传递给 cts:search 函数的函数?

我想做这样的事情:

xquery version "1.0-ml";

declare namespace local = "http://www.local.com/" ;

declare function local:xpath-search($xpath as xs:string, $collection as xs:string, $limit as xs:string) {
let $valid := cts:valid-index-path($xpath,fn:false())
let $results := cts:search(xdmp:value($xpath), cts:and-query(()) ) [position() < 100]
return
if ($valid = false()) then "xpath is invalid"
else (
if ($results = '') then "no results were found"
else $results
)
} ;


local:xpath-search('//p', '', '')

但是,我收到“无法搜索表达式”错误。

最佳答案

使用http://docs.marklogic.com/search:search并提供 <searchable-expression>选项。

search:search函数已经实现了你想要的。在引擎盖下它调用cts:search并使用 xdmp:value 提供可搜索表达式.你可以这样做,但是 search:search已经编写和测试。

顺便说一句,使用基于路径的可搜索表达式 cts:search对于粗心的人来说是一个陷阱。在大多数情况下,最好使用 collection()作为 cts:search 的第一个参数, 匹配整个数据库。然后使用 cts:query第二个参数,匹配你感兴趣的文档。

但是//p呢? ?了解 MarkLogic 索引片段而不是元素很重要。默认情况下,片段是文档。您可以更改它:您甚至可以在 //p 处进行分段等级。但在大多数情况下,这是个坏主意。您最好使用 cts:search匹配文件,cts:highlight在段落中查找匹配项。 search:search功能也支持这一点。

关于xml - MarkLogic:在 cts:search 中将字符串转换为路径表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462575/

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