如何以 json 格式向 StructuredQueryDefinition 添加选项
How to add options to StructuredQueryDefinition in json format
我是 marklogic 的新手,想在 json 中创建 marklogic 查询。
我使用 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));
我可以使用 StructuredQueryDefinition 在 json 中创建查询吗?如果可以,我如何为 json 添加选项?
谢谢
您不能使用 StructuredQueryDefinition 在 json 中创建查询。但是,您可以使用流行的 XML 构建器来构建您的 XML 选项,这样您就不必管理原始 XML。或者,如果您真的喜欢 JSON 中的选项,您可以使用 Jackson 在 JSON 中生成结构化查询,然后组合您的 json 选项。
像这样:
ObjectMapper mapper = new ObjectMapper();
ObjectNode combinedQuery = mapper.createObjectNode();
combinedQuery.putObject("search")
.putObject("query")
.putArray("queries")
.addObject()
.putObject("or-query")
.putArray("queries")
.add(mapper.readTree(query))
.addObject()
.putObject("properties-fragment-query")
.putObject("term-query")
.putArray("text")
.add(parameters.getQuery());
combinedQuery.with("search")
.setAll((ObjectNode) mapper.readTree(options));
queryMgr.newRawCombinedQueryDefinition( new JacksonHandle(combinedQuery));
为了后人,我相信这个问题与有关。也许我对那个问题的回答中的某些内容也会对这个问题有所帮助。
我是 marklogic 的新手,想在 json 中创建 marklogic 查询。
我使用 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));
我可以使用 StructuredQueryDefinition 在 json 中创建查询吗?如果可以,我如何为 json 添加选项?
谢谢
您不能使用 StructuredQueryDefinition 在 json 中创建查询。但是,您可以使用流行的 XML 构建器来构建您的 XML 选项,这样您就不必管理原始 XML。或者,如果您真的喜欢 JSON 中的选项,您可以使用 Jackson 在 JSON 中生成结构化查询,然后组合您的 json 选项。
像这样:
ObjectMapper mapper = new ObjectMapper();
ObjectNode combinedQuery = mapper.createObjectNode();
combinedQuery.putObject("search")
.putObject("query")
.putArray("queries")
.addObject()
.putObject("or-query")
.putArray("queries")
.add(mapper.readTree(query))
.addObject()
.putObject("properties-fragment-query")
.putObject("term-query")
.putArray("text")
.add(parameters.getQuery());
combinedQuery.with("search")
.setAll((ObjectNode) mapper.readTree(options));
queryMgr.newRawCombinedQueryDefinition( new JacksonHandle(combinedQuery));
为了后人,我相信这个问题与