我正在尝试添加排序/排序查询。
在我的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/