java - 在与 Marklogic 交谈之前如何将排序查询添加到我的 StructuredQueryBuilder

标签 java json search marklogic

我正在尝试添加排序/排序查询。

在我的java:

StructuredQueryBuilder qb = new StructuredQueryBuilder();
QueryDefinition queryDef = qb.and(qb.value(qb.jsonProperty("status"), "Active"));               
SearchHandle resultsHandle = new SearchHandle();        
queryManager.setPageLength(PAGE_SIZE_TEN);
int start = PAGE_SIZE_TEN * (pageNumber - 1) + 1;
queryManager.search(queryDef, resultsHandle, start);

上面的代码将返回 resultsHandle,其中包含为变量“start”指定的每个页面找到的 10 个 json 文件,状态为“Active”。

我的问题是如何包含排序查询,例如以下内容:

QueryDefinition queryDef = qb.and(qb.value(qb.jsonProperty("status"), "Active"), 
                                  qb.sort?(qb.jsonProperty("dateCreated"));

我希望它按最新日期的顺序为我提供前 10 个 json 文件。得到结果后再做 Comparator 已经太晚了,因为结果返回随机的 10 个 json 文件,没有任何特定的顺序。

一些 json 文件示例如下所示: 1.json

[
 {
  "id":"1",
  "dateCreated":"2017-10-01 12:00:00",
  "status":"Active"
  "body":"This is a test"
 }
]

2.json

[
 {
  "id":"2",
  "dateCreated":"2017-10-02 12:00:00",
  "status":"Active"
  "body":"This is a test 2"
 }
]

我意识到有一个枚举 StructuredQueryBuilder.Ordering,我该如何使用它?

最佳答案

StructuredQueryBuilder.Ordering 专门用于near-query,与您想要执行的操作无关。您需要使用查询选项来定义搜索结果的排序顺序。请参阅 sort-order 查询选项:

http://docs.marklogic.com/guide/search-dev/appendixa#id_44212

选项可以预先定义并安装在 MarkLogic 上,然后在搜索中引用,或者您可以在运行时定义它们并将它们与组合查询中的结构化查询相结合。

关于java - 在与 Marklogic 交谈之前如何将排序查询添加到我的 StructuredQueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47627745/

相关文章:

java - 数据库中的队列管理

iOS JSON 解析

带有包含的 WPF 组合框文本搜索

mongodb - 使用 meteor 和 MongoDB 查询搜索命令

java - Java 1.4 中枚举的替代品

java - 在多个类之间共享一个 JDBC 连接池

java - 应用程序关闭时写入数据库

javascript - 如何通过从另一个对象中选择特定属性来克隆新的对象数组?

ios - 将 JSON 数组反序列化为对象的 Swift 数组

c - 查找 C 字符串中的位置