-1

我是 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 添加选项?

谢谢

4

1 回答 1

0

您不能使用 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));

对于后代,我相信这个问题与来自同一用户的这个问题有关。也许我对那个答案的回答也会对这个问题有所帮助。

于 2016-02-03T20:38:56.650 回答