cts: ошибка выделения функции при применении элемента-обертки к результату поиска - PullRequest
0 голосов
/ 09 апреля 2019

Я применяю функцию cts: highlight к результату поиска, когда я оборачиваю результат поиска в элемент оболочки, который выдает ошибку.

[1.0-ml] XDMP-CHILDNODEKIND: let $ SearchOption: = case-insensitivewildcardedstemmeddiacritic-insensitivepunctuation-insensitivetrue let $ search: = search: search ("multilayers", $ SearchOption, 1, 10) return {для $ searchResult в $ search / search: result let $ docUri: = $ searchResult / @ uri return let 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>

1 Ответ

0 голосов
/ 11 апреля 2019

(превращение комментария в правильный ответ)

Основная причина в том, что вы вводите узел документа в функцию cts: highlight, и, по-видимому, в вашем случае он находит совпадение на верхнем уровне. Это звучит немного странно, но он пытается поместить этот узел верхнего уровня в элемент hilighted-text, но это не разрешено в XML.

Простое решение - передать корневой элемент, а не сам узел документа, используя $document/node() вместо $document.

НТН!

...