【问题标题】:is it possible to query Marklogic using XCC without using an 'AdhocQuery'是否可以在不使用“AdhocQuery”的情况下使用 XCC 查询 Marklogic
【发布时间】:2018-04-11 02:17:04
【问题描述】:

任何人都尝试使用 XCC java 类连接到 Marklogic - 我想连接并执行查询但不使用“adhocquery”(xquery) - 这可能吗?使用 XCC 会话或请求类?

【问题讨论】:

  • 你不使用adhocquery的理由是什么?
  • 如果“查询”是指在运行时才知道查询的情况下运行查询,则不。这就是“临时”的意思。在您提供查询的位置运行查询。如果“查询”是指调用传递参数的现有模块,那么是的,这就是“调用”的意思。请参阅此示例:docs.marklogic.com/javadoc/xcc/com/marklogic/xcc/examples/…
  • 我正在寻找使用 java 执行查询的最快方法 - 如果这意味着调用模块并且您可以传递参数,那么我想这就是我想要的 - 即我没有传递 xquery字符串,我正在传递一些应用于服务器模块的参数
  • 无论您使用 AdhocQuery 还是调用模块,与您的查询是否利用 MarkLogic 提供的所有索引以及可以添加的索引无关紧要。出于代码维护的原因,我建议更多地在 ML 中调用模块,这样您就不会通过 Java 中的字符串连接来构建长查询。那么性能就是你如何构建查询以及它们是否可以通过索引完全解决的问题。

标签: java marklogic


【解决方案1】:

您可以使用 request 调用模块,而不是执行 adhocQuery。newModuleInvoke()

String connectionUri = "xcc://user:password@localhost:8888";
String moduleUri = "/some/module.xqy";

ContentSource contentSource = ContentSourceFactory.newContentSource(connectionUri);   
ResultSequence resultSequence = null;

try (Session session = contentSource.newSession()) {
  Request request = session.newModuleInvoke(moduleUri);
  /*
   *if you need to set request parameters, look at the setXXXVariable methods
   * https://docs.marklogic.com/javadoc/xcc/com/marklogic/xcc/Request.html
   * i.e.
   * request.setNewStringVariable("foo", "bar");
   * request.setVariable(xdmVariable); //see also: ValueFactory.newVariable()
   */ 
  resultSequence = session.submitRequest(request);

  //do stuff with the result sequence

} catch (RequestException exc) { 
    //Determine if the exception is retryable or should fail 
} catch (Exception exc) { 
    //Determine what to do with other exceptions 
} finally { 
    //unfortunately, ResultSequence doesn't implement closable...
    if (null != resultSequence && !resultSequence.isClosed()) { 
      resultSequence.close(); 
      resultSequence = null; 
    } 
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2023-03-24
    • 2015-06-23
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多