我正在使用marklogic 9和数据移动api来导出搜索结果。我创建了一个类似的查询:
.length()
然后我将此查询发送到QueryBatcher,创建如下:
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));
启动batcher:
QueryBatcher batcher = databaseClient.newDataMovementManager().newQueryBatcher(query)
但是,如果我查看返回的项目,它们不会按我使用的排序选项排序,甚至不在批处理中。是否可以对URI进行排序?
答案 0 :(得分:0)
回答自己:这是不可能的。我在marklogic github项目(https://github.com/marklogic/java-client-api/issues/916)上创建了一张票,最后的结论是(https://github.com/marklogic/java-client-api/issues/916#issuecomment-385773027):
DMSDK通过引导查询将巨大的任务拆分为小块 到每个林并批量获取每个森林的URI。甚至 如果我们传入排序选项,我们会得到每个森林的排序 而不是整体而言。由于我们无法获得全球订购,我们选择了 放弃选项,订购时没有意义 森林水平。