MarkLogic,JavaAPI。获取已排序的搜索结果

MarkLogic,JavaAPI。获取已排序的搜索结果,marklogic,Marklogic,抱歉,这可能是个愚蠢的问题,但我在MarkLogic的文档中找不到: 我正在从某个系列中选择所有项目,希望首先获得最新的项目。因此,我正在寻找一些能力,以获得搜索结果排序。我通过XQuery看到了这一点,但在JavaAPI中找不到 总之,我的问题是: 是否可以通过Java API获得按“lastModifyTime”排序的搜索结果(据我所知,这是一些自动创建/更新的字段) 是否可以通过按自定义属性排序的Java API获取搜索结果 更新: 正如@mblakele在他的回答中提到的那样,Query

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

我正在从某个系列中选择所有项目,希望首先获得最新的项目。因此,我正在寻找一些能力,以获得搜索结果排序。我通过XQuery看到了这一点,但在JavaAPI中找不到

总之,我的问题是:

  • 是否可以通过Java API获得按“lastModifyTime”排序的搜索结果(据我所知,这是一些自动创建/更新的字段)
  • 是否可以通过按自定义属性排序的Java API获取搜索结果
  • 更新:

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

    我在数据库中为自己的属性“LAST_MODIFICATION_TIME”创建了范围索引,然后使用以下代码创建了查询选项:

    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)?

    您可以使用设置排序顺序。位于的教程介绍了如何设置查询选项。没有关于
    QuerySortOrder
    的示例,但是使用它应该非常简单。

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

    MarkLogic确实提供上次修改的属性,默认情况下该属性处于禁用状态。您可以使用管理UI的数据库配置页面中的“维护上次修改”复选框启用它。但是,该值存储在properties片段中。因此,在检索文档时不能对该属性进行排序

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

    然后可以在管理UI中的元素上创建日期时间范围索引

    要在搜索时使用范围索引,请首先创建指定排序顺序的查询选项。QueryOptions和QueryOptions Builder类已被弃用,因此最好编写原始查询选项:

    对于排序,您的查询选项类似于以下内容

    <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>
    
    
    
    顺便说一下,这里描述了完整的查询选项集:

    希望这是有用的


    Erik Hennum

    感谢您的回答,但如何使用此QuerySortOrder对我来说并不那么简单(请参阅我问题中更新的详细信息)。你能把你的答案扩大一点吗?