【问题标题】:AND\OR Query search using MarkLogic (XQuery or equivalent)AND\OR 使用 MarkLogic(XQuery 或等效项)进行查询搜索
【发布时间】:2015-03-30 19:22:11
【问题描述】:

我是 MarkLogic 的新手,我们正在为我们的产品用例评估 MarkLogic。

我们评估了一些 NoSQL 数据库,例如 MongoDB、Couchbase 等。

我正在寻找以下类型的查询搜索。

(条件1或条件2)与(条件3或条件4)与(条件5)

MarkLogic 可以提供这种类型的搜索查询吗?

我刚刚开始学习 MarkLogic 并试图了解架构。

谢谢, 萨米尔

【问题讨论】:

    标签: xquery marklogic


    【解决方案1】:

    是的,MarkLogic 为此类功能提供了一些高级库。看看搜索 API。

    从这里开始:https://developer.marklogic.com/learn/2009-07-search-api-walkthrough

    更详尽的文档在这里:https://docs.marklogic.com/guide/search-dev/search-api

    【讨论】:

    • 根据 Condition1 到 Condition5 的实际情况,可能不需要高级库,因为 XQuery 本身提供布尔运算符。
    【解决方案2】:

    如上所述,MarkLogic 可以通过多种方式处理这种逻辑。
    例如,这就是您可以使用 CTS 库设置搜索查询的方式(我强烈推荐 CTS 库,因为它使用索引更好,并且它们的构建更加灵活):

    cts:search(//elementName,
      cts:and-query((
        cts:element-attribute-value-query(xs:QName("entry"), xs:QName("private"), "true"),
        cts:or-query((
          cts:element-attribute-value-query(xs:QName("entry"), xs:QName("forced"), "false"),
          cts:element-attribute-value-query(xs:QName("entry"), xs:QName("forced"), "pending")
          ))
        ))
      )
    

    这个 sn-p 显示 AND 和 OR 逻辑。 cts:and-query()cts:or-query() 函数可以获取节点列表。上面的查询说:“找到一个元素(称为 elementName),它的属性为 private='true' 并且具有以下任一属性:forced='true' 或forced='pending'”。

    对于更简单的数据,您可以通过执行以下操作来使用 xQuery 谓词:

    for $node in $xml/parent/child[@param1 eq "test" AND @param2 eq "OK"]/grandchild[@service eq "yahoo" or @service eq "google"]
      return $node
    

    【讨论】:

      【解决方案3】:

      对原始问题的简短回答是“是”。 “如何”的细节将取决于用于表达查询的方法。

      reference architecture 建议使用三层方法,如果您使用其中一种方法,则使用 JavaNode.js Client APIs,或者如果您在中间层中使用不同的语言,则使用 HTTP 调用 REST API

      如果您在 MarkLogic 的应用服务器(通常作为两层架构)中工作,您也可以使用 Search API(如 wst 所述)。从 MarkLogic 8 开始,您可以使用 XQuery 或服务器端 JavaScript 来做到这一点。

      【讨论】:

        猜你喜欢
        • 2021-05-11
        • 2011-11-23
        • 2021-12-23
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 2022-10-04
        • 1970-01-01
        • 2020-11-16
        相关资源
        最近更新 更多