当我将搜索结果包装到wrapper元素中时,我正在对搜索结果应用cts:highlight函数,这会引发错误。
[1.0-ml] XDMP-CHILDNODEKIND:让$ SearchOption:=不区分大小写通配符修饰词组变音符号不敏感标点不敏感true let $ search:= search:search(“ multilayers”,$ SearchOption,1,10)return {for $ searchResult in $ search / search:result let $ docUri:= $ searchResult / @ uri return let $ document:= fn:doc($ docUri)return cts:highlight($ document,“ multilayers”,{$ cts:text})}- -元素节点不能有文档节点子节点
下面是代码:
xquery版本“ 1.0-ml”;
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
let $SearchOption := <options xmlns="http://marklogic.com/appservices/search">
<term>
<term-option>case-insensitive</term-option>
<term-option>wildcarded</term-option>
<term-option>stemmed</term-option>
<term-option>diacritic-insensitive</term-option>
<term-option>punctuation-insensitive</term-option>
</term>
<debug>true</debug>
</options>
let $search := search:search('multilayers',$SearchOption,1,10)
return
<result>{
for $searchResult in $search/search:result
let $docUri := $searchResult/@uri
return
(
let $document := fn:doc($docUri)
return
cts:highlight($document, "multilayers", <hilighted-text>{$cts:text}</hilighted-text>)
)
}</result>
答案 0 :(得分:0)
(将评论转变为正确的答案)
根本原因是您正在将文档节点输入cts:highlight函数,并且显然在您的情况下它在顶层找到了匹配项。听起来有些奇怪,但是它尝试将顶级节点放在hilighted-text
元素中,但是XML不允许这样做。
简单的解决方案是使用$document/node()
而不是$document
来传递根元素,而不是文档节点本身。
HTH!