Есть ли способ вернуть коллекции документа, если вы используете API поиска ?

Мне не удалось найти вариант в Справочнике по параметрам запроса для этого использования кейс.

Прямо сейчас мне пришлось бы создать свою собственную оболочку вокруг API поиска и самому найти коллекции результатов поиска:

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";

let $docs := search:search("query")

return for $doc in $docs
return xdmp:node-collections(doc($doc/search:result/@uri))

Изменить: это также должно быть доступно с api java-клиента marklogic.

0
Wagner Michael 13 Сен 2018 в 13:15

2 ответа

Лучший ответ

Если вы используете MarkLogic REST api, вы можете использовать параметр category в /v1/search для вывода metadata вместо содержимого. Если вы хотите добавить его в результаты поиска, лучше всего использовать преобразование REST для /v1/search с параметром transform. Смотрите также:

https://docs.marklogic.com/REST/GET/v1/search

НТН !

2
grtjn 13 Сен 2018 в 11:19

Чтобы получить только метаданные документа, такие как коллекции, а не содержимое документа, напишите и установите преобразование на стороне сервера, которое принимает вызовы xdmp: node-collections () в документе и создает заменяющий документ. Видеть:

http://docs.marklogic.com/guide/java/transforms

Затем вызовите метод QueryDefinition.setResponseTransform (), чтобы указать преобразование на стороне сервера:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/QueryDefinition.html#setResponseTransform-com.marklogic.client.document.ServerTransform-

Перед передачей определения запроса в метод DocumentManager.search ():

http://docs.marklogic.com/javadoc/client/com/marklogic/client/document/DocumentManager.html#search-com.marklogic.client.query.QueryDefinition-long-

В качестве сноски метод DocumentManager.search () может извлекать как метаданные документа, так и содержимое в одном запросе без преобразования на стороне сервера, вызывая DocumentManager.setMetadataCategories () перед поиском. Видеть:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/document/DocumentManager.html#setMetadataCategories-java.util.Set-

Надеюсь, что это помогает,

0
ehennum 13 Сен 2018 в 23:02