【发布时间】:2014-05-11 08:54:45
【问题描述】:
抱歉,这可能是一个愚蠢的问题,但我无法在 MarkLogic 的文档中找到它:
我正在从某个集合中选择所有项目,并希望首先获得最新的。所以我正在寻找一些对搜索结果进行排序的能力。我通过 XQuery 看到它是可能的,但无法在 Java API 中找到它。
所以,总而言之,我的问题是:
- 是否可以通过按“lastModifyTime”排序的 Java API 获取搜索结果(据我了解,这是一些自动创建/更新的字段)?
- 是否可以通过按我的自定义属性排序的 Java API 获取搜索结果?
更新:
正如@mblakele 在他的回答中提到的 - 有 QueryOptions.QuerySortOrder,可用于此目的。我查看了他们的教程,对我来说并不是那么简单,如何使用它。
我在我的数据库中为我自己的属性“LAST_MODIFICATION_TIME”创建了范围索引,然后我使用以下代码创建了 QueryOptions:
QueryOptionsBuilder qob = new QueryOptionsBuilder();
RangeSpec rangeSpec = qob.fieldRangeIndex("LAST_MODIFICATION_TIME", qob.rangeType("xs:dateTime"));
QueryOptions.QuerySortOrder querySortOrder = qob.sortOrder(rangeSpec, QueryOptions.QuerySortOrder.Direction.DESCENDING);
接下来我该怎么做?只需使用以下命令将其写入 REST 服务器:
QueryOptionsHandle optsHandle = new QueryOptionsHandle().withSortOrders(querySortOrder);
databaseClient.newServerConfigManager().newQueryOptionsManager().writeOptions("myConstraintName", optsHandle);
如果是 - 我如何将它用于我的进一步搜索查询(我正在使用 StructuredQueryBuilder)?
【问题讨论】:
标签: marklogic