#xquery #marklogic-10
Вопрос:
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint>
<collection>'/mycollection'</collection>
</constraint>
</options>
let $options-1 :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix="/mycollection"/>
</constraint>
</options>
return
search:search('Text',$options)
Я попробовал оба варианта, но ни один из них не ограничивает поиск конкретной коллекцией /mycollection
.
Ответ №1:
Вы определили вызываемое ограничение collection
и настроили префикс для этого ограничения /mycollection
, однако вы не применили это ограничение к своему поиску.
Ограничения не применяются автоматически к вашим поисковым запросам, они просто определяют, какие условия и параметры поиска могут быть применены.
Если вы посмотрите на пример ограничения коллекции, они заметят:
Если вы включаете атрибут префикса в определение ограничения коллекции, то имя коллекции получается из префикса, связанного со значением ограничения.
Итак, для того, чтобы вы применили ограничение, которое ограничивает коллекцию /mycollection
, я бы сделал это:
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection />
</constraint>
</options>
return
search:search("collection:/mycollection " ||'Text', $options)
Если все ваши коллекции начинаются с начальной косой черты, вы можете установить ее в качестве префикса, а затем просто применить «имя» коллекции без начальной косой черты:
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix="/"/>
</constraint>
</options>
return
search:search("collection:mycollection "||'Text', $options)
Комментарии:
1. Что это значит? Не возвращает никаких документов, возвращает документы, соответствующие вашему поисковому запросу, но не ограниченные коллекцией, или что?
2. Не ограничиваясь этой коллекцией.