我正在创建 REST Web 服务,它通过 url 获取参数并根据这些动态参数在 marklogic 中搜索。
q=search&offset=0&limit=10& sort=documentId|asc&termAggregations=group:10
我正在使用 StructuredQueryDefinition & RawCombinedQueryDefinition 创建:
StructuredQueryDefinition queryCriteria = sqb.or(query, sqb.properties(sqb.term(parameters.getQuery))));
String combinedQuery = "<search xmlns=\"http://marklogic.com/appservices/search\">" + queryCriteria.serialize() + options + "</search>";
RawCombinedQueryDefinition rawCombinedQuery = queryMgr.newRawCombinedQueryDefinition( new StringHandle(combinedQuery));
为了使用选项创建查询,我使用 String /String Buffer,例如选项 extract-document-data
extractedDataOption.append("<extract-document-data selected=\"include\">")
Loop through each field
{ extractedDataOption.append("<extract-path ");
extractedDataOption.append(" xmlns:");
extractedDataOption.append(field_attributes.get("namespace"));
extractedDataOption.append(" >//");
extractedDataOption.append(field_attributes.get("fieldname"));
extractedDataOption.append(" </extract-path>");
}
extractedDataOption.append("</extract-document-data>");
对于排序、构面、过滤器约束也是如此。
我不能使用持久查询作为排序参数,方面和过滤器基于 web 服务请求参数。
此外,我看到 QueryOptionsBuilder 和其他类似的类已被弃用。
有人可以让我动态创建这些不同选项而不是字符串的最佳方法吗?
谢谢