【发布时间】:2016-01-27 20:27:27
【问题描述】:
我正在创建 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 和其他类似的类已被弃用。
谁能告诉我动态创建这些不同选项而不是字符串的最佳方法是什么?
谢谢
【问题讨论】:
标签: marklogic marklogic-8