Как отсортировать результаты при использовании Data Movement API? - PullRequest
0 голосов
/ 27 апреля 2018

Я использую marklogic 9 и api перемещения данных для экспорта результатов поиска. Я создаю запрос как:

StructuredQueryDefinition query = ...
String sortOptionsXml = "<sort-order  direction=\"" + sortDirection + "\">" + "<path-index>" + sortIndex + "</path-index>" + "</sort-order>";
String queryAsXml = "<search xmlns=\"http://marklogic.com/appservices/search\">" + query.serialize()
                + "<options><search-option>filtered</search-option>\n" + sortOptions + "</options>" + "</search>"
RawCombinedQueryDefinition combinedQueryDefinition = queryManager
            .newRawCombinedQueryDefinition(new StringHandle().with(queryAsXml).withFormat(Format.XML));

и затем я отправляю этот запрос в QueryBatcher, созданный как:

QueryBatcher batcher = databaseClient.newDataMovementManager().newQueryBatcher(query)

и запустите дозатор как:

batcher.withBatchSize(500)
        .withThreadCount(8)
        .onUrisReady(
                new QueryBatchListener() {
                    @Override
                    public void processEvent(QueryBatch queryBatch) {
                        LOGGER.info(String.join(",", queryBatch.getItems()));
                    }
                }
        )
        .onQueryFailure(Exception::printStackTrace);
JobTicket jobTicket = dataMovementManager.startJob(batcher);
batcher.awaitCompletion();
dataMovementManager.stopJob(jobTicket);

Однако, если я посмотрю возвращенные элементы, они не сортируются по опциям сортировки, которые я использовал, даже внутри пакета. Можно ли отсортировать URI?

1 Ответ

0 голосов
/ 02 мая 2018

Отвечая себе: это невозможно. Я создал заявку на проект marklogic github (https://github.com/marklogic/java-client-api/issues/916), и окончательный вывод был (https://github.com/marklogic/java-client-api/issues/916#issuecomment-385773027):

)

DMSDK разбивает огромные задачи на маленькие куски, направляя запрос для каждого леса и получения URI из каждого леса в пакетном режиме. Четное если мы передадим параметры сортировки, мы получим заказ на лес и не в целом. Поскольку мы не можем получить глобальный заказ, мы выбрали отбросить варианты, и не имеет смысла заказывать в лесной уровень.

...