Есть ли способ передать массив строк как переменную для серверного сценария Xquery? - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь улучшить поиск моих Spring-Boot Services, внедрив серверный поиск xquery, который запускается при вызове Java

Я пробовал кое-что с петлями, но это не сработало

....

protected DatabaseClient databaseClient;

public DocumentDTO searchDocument(String language, String documentId, String... culsterIds) throws JAXBException {
        ServerEvaluationCall invoker = databaseClient.newServerEval();
      invoker.modulePath("/main/searchForDocuments.xqy")
                .addVariable("language", language)
                .addVariable("documentId", documentId)
                .addVariable("clusterIds", consentTemplateIds);
....

переменные должны быть вставлены в скрипт xqy для получения соответствующего результат поиска по параметрам.

1 Ответ

1 голос
/ 28 мая 2019

Как вы уже определили, addVariable () принимает только отдельные значения.

Вы можете сериализовать список значений в виде массива JSON и отправить массив JSON с помощью JSONWriteHandle. Затем в XQuery используйте xdmp: from-json () для преобразования узла массива JSON в массив в памяти.

Или, если вы используете последнюю версию MarkLogic 9, вы можете использовать службу данных, чтобы создать клиентский интерфейс, указанный для вашего модуля конечной точки:

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

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

...