Marklogic 如何以json格式向StructuredQueryDefinition添加选项

Marklogic 如何以json格式向StructuredQueryDefinition添加选项,marklogic,marklogic-8,Marklogic,Marklogic 8,我是marklogic新手,希望用json创建marklogic查询 我使用StructuredQueryDefinition创建查询,然后创建RawCombinedQueryDefinition StructuredQueryDefinition queryCriteria = sqb.or(query, sqb.properties(sqb.term(parameters.getQuery)))); String combinedQuery = "<search xmlns=\"htt

我是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 queryCriteria=sqb.or(query,sqb.properties(sqb.term(parameters.getQuery)));
String combinedQuery=“”+queryCriteria.serialize()+options+”;
RawCombinedQueryDefinition rawCombinedQuery=queryMgr.newRawCombinedQueryDefinition(新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));

对于后人来说,我相信这个问题与我们有关。也许我对这个问题的回答也会对这个问题有所帮助。

感谢您对StructuredQueryDefinition的确认。Marklogic应在将来提供此功能作为增强功能。