Рассмотрим следующий XML: -Как вернуть результат фильтрации в Marklogic?
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
</catalog>
Теперь я хочу, чтобы запустить поисковый запрос в отношении данного документа и хотите вернуть результат фильтрации набора (например имя автора).
Один из способов сделать это: -
xquery version "1.0-ml";
import module namespace search="http://marklogic.com/appservices/search"
at "/Marklogic/appservices/search/search.xqy";
declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
</options>;
for $x in search:search("", $options)/search:result
return $x//author/text()
search:search
Но API сначала кэширование всего результата в кэше, а затем мы найти наш нужный узел с XPath. Я не хочу этого. Я хочу, чтобы API search:search
возвращал только нужный элемент, чтобы весь набор результатов не был кэширован в сервере marklogic
. Может ли кто-нибудь сказать мне, пожалуйста, как я могу достичь этого в Marklogic
?
В MarkLogic термин «отфильтрованный» означает нечто иное, чем ваше использование здесь. –
Являются ли ваши документы XML примерно такими же, как у образца выше, или у одного содержится много тегов ? Если файл большой, возможно, вы можете разделить его на отдельные файлы XML на ? В этом случае, почему вы считаете, что вам нужен поиск вместо просто XPath, например // author/title()? Помимо пейджинга, я не уверен, что поиск: search() делает для вас в этой ситуации. –
derickson