Я использую 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?