小编Shi*_*are的帖子

cts:element-query vs cts:path-range-query 性能

我们正在开发一个存储大量数据的企业应用程序。在我们的应用程序中,我们强制用户创建多个路径范围索引以加快搜索速度。

早些时候,我们利用路径范围索引来使用cts:path-range-query()加快搜索速度,但现在我发现使用cts:element-query()可以获得相同的结果,而无需创建路径范围索引。

例如 -

  1. 使用cts:path-range-query() -> 这里我需要为 /tXML/Message/INVENTORY/ASNId 创建路径范围索引

    xquery version "1.0-ml"; cts:uris('', (), cts:and-query((cts:collection-query("integration"), cts:path-range-query("/tXML/Message/INVENTORY/ASNId", "=", "10121600"))))

  2. 使用cts:element-query() -> 这里我不需要创建路径范围索引。

    xquery version "1.0-ml"; cts:uris('', (), cts:and-query((cts:collection-query("integration"), cts:element-query(xs:QName("tXML"),cts:element-query(xs:QName("Message"), cts:element-query(xs:QName("INVENTORY"), cts:element-value-query(xs:QName("ASNId"), "10121600")))))))

我的问题是,

  1. 如果我使用 cts:element-query() 得到与 cts:path-range-query() 相同的结果,那么为什么我需要强制用户创建路径范围索引?。

  2. 哪个查询适合大量数据?.(cts:element-query()cts:path-range-query()

请帮我找到这两个问题的答案。

marklogic marklogic-9

4
推荐指数
1
解决办法
184
查看次数

cts:values 函数不返回路径引用的所有值

假设我在 MarkLogic 中有三个文档,如下所示,

 <employee>
    <name>a</name>
    <age>10</age>
</employee>

<employee>
    <name>b</name>
    <age>10</age>
</employee>

<employee>
    <name>c</name>
    <age>10</age>
</employee>
Run Code Online (Sandbox Code Playgroud)

文件 uris - /employee/a, /employee/b, /employee/c分别。我已经为"/employee/age"作为int标量 stype创建了路径范围索引。

我的要求是 - 获取路径范围索引的所有值的总和"/employee/age"

我试过-sum(cts:values(cts:path-reference("/employee/age")))在这里返回 10 作为输出总和我期待 30 作为输出总和

上述问题的解决方案是什么?

marklogic marklogic-9

4
推荐指数
1
解决办法
42
查看次数

如何将 fn:starts-with() 和 fn:ends-with() 与 cts:uris() 一起使用

我的要求是,仅当路径范围索引值以某个单词开头或结尾时,我才想返回文档 URI。

根据 MarkLogic 文档,我只能使用 ">、<、<=、>=、=、!=" 来比较路径范围索引值,但在我的要求中,我想使用 fn:starts-with() 或 fn:ends-和()。

有什么办法可以满足这个要求吗?

marklogic marklogic-9

3
推荐指数
1
解决办法
88
查看次数

Order By中“最大空”和“最小空”的作用是什么

在阅读MarkLogic Query Performance and Tuning Guide,我知道empty greatestempty least以及它如何可以使用order by。但是,除此之外,没有太多细节或示例可供理解:

您可以指定最大的空或最小的空,但空总是需要在最后,优化才能使订单起作用。例如,空最大优化为升序;空最小优化为降序。如果两者都未指定,MarkLogic 将选择优化的顺序。以下示例违背了默认设置。它按 $doc/document/modified_date 对列表进行升序排列,最少为空:

xquery version "1.0-ml";
for $doc in fn:doc()
order by $doc/document/modified_date ascending empty least
return $doc
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我了解empty greatestand的实际用例empty least吗?

xquery marklogic

3
推荐指数
1
解决办法
46
查看次数

按顺序阅读文档

我们有一个 URI 列表,我们需要按照传递的顺序读取这些 URI。

示例 1

doc(("/doc1", "/doc2", "/doc3"))
Run Code Online (Sandbox Code Playgroud)

上面的函数应该返回“/doc1”的内容,然后是“/doc2”,然后是“/doc3”,但它没有发生。

下面的查询也发生了同样的事情。

例2

cts:search(doc(), cts:document-query((("/doc1"),("/doc2"),("/doc3"))))
Run Code Online (Sandbox Code Playgroud)

如果我想以传递 URI 的顺序阅读文档,有什么解决方案?

任何帮助表示赞赏..!

xquery marklogic marklogic-10

2
推荐指数
1
解决办法
51
查看次数

标签 统计

marklogic ×5

marklogic-9 ×3

xquery ×2

marklogic-10 ×1