首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkLogic,java。将搜索结果排序

MarkLogic,java。将搜索结果排序
EN

Stack Overflow用户
提问于 2014-05-11 08:54:45
回答 2查看 865关注 0票数 1

对不起,这可能是个愚蠢的问题,但我在MarkLogic的文档中找不到这个:

我从一些收藏品中选择所有的物品,并想先得到最新的。所以我在寻找一些搜索结果排序的能力。我通过XQuery看到了这是可能的,但是在Java中找不到这一点。

总之,我的问题是:

  1. 是否有可能通过Java获得按"lastModifyTime“排序的搜索结果(据我所知--这是一些自动创建/更新的字段)?
  2. 是否有可能通过Java获得按我的自定义属性排序的搜索结果?

更新:

正如@mblakele在他的回答中提到的,有QueryOptions.QuerySortOrder,它可以用于这个目的。我查看了他们的教程,这对我来说不是那么简单,如何使用它。

我在DB中为自己的属性"LAST_MODIFICATION_TIME“创建了范围索引,然后使用以下代码创建了QueryOptions:

代码语言:javascript
复制
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服务器:

代码语言:javascript
复制
QueryOptionsHandle optsHandle = new QueryOptionsHandle().withSortOrders(querySortOrder);
databaseClient.newServerConfigManager().newQueryOptionsManager().writeOptions("myConstraintName", optsHandle);

如果是--我如何在进一步的搜索查询中使用它(我正在使用StructuredQueryBuilder)?

EN

回答 2

Stack Overflow用户

发布于 2014-05-14 13:49:22

搜索API (以及上面的REST和Java层)只能对返回的片段上的索引进行排序。

MarkLogic提供了最后一次修改的属性,默认情况下是关闭的.您可以在Admin的数据库配置页面中使用“维持上次修改”复选框来启用它。但是,此值存储在属性片段中。因此,在检索文档时,不能对该属性进行排序。

但是,您可以在编写文档时向文档添加最后修改的元素。文档写入转换提供了插入该元素的一种方法:

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

然后,可以在Admin中的元素上创建日期时间范围索引。

若要在搜索时使用范围索引,请首先创建指定排序顺序的查询选项。QueryOptions和QueryOptionsBuilder类是不推荐的,所以最好编写原始查询选项:

20346

对于排序,查询选项如下所示

代码语言:javascript
复制
<search:options xmlns:search="http://marklogic.com/appservices/search">
<search:sort-order type="xs:dateTime" direction="ascending">
  <search:element ns="" name="my-last-modified"/>
</search:sort-order>
</search:options>

顺便说一句,完整的查询选项在这里描述:

33716

希望这是有用的

埃里克·亨纳姆

票数 2
EN

Stack Overflow用户

发布于 2014-05-11 17:13:15

可以使用QueryOptions.QuerySortOrder设置排序顺序。https://developer.marklogic.com/learn/java/custom-search的教程解释了如何设置查询选项。没有QuerySortOrder的例子,但是使用它应该非常简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23590730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档