MarkLogic - 在不使用Xpath的情况下获取不同的结果集

时间:2016-07-11 07:24:10

标签: xpath xquery marklogic

我使用下面提到的查询从存储在MarkLogic集合中的XML文件中获取不同的值。集合包含超过40k文件。

执行查询时,结果需要很长时间。有没有更好的方法来优化以下查询或任何其他选项,以便在没有XPath的情况下使用此查询。

的Xquery:

fn:distinct-values(fn:collection(collectionName)//caseml/case[@jur eq in]/@year)

输入XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<caseml>
  <case jur="in" series="mlj" volume="1" year="2016" startpage="129">
    <p num="y" pnum="22">
      <text>
        In view of the aforesaid discussion, we find the writ petition completely devoid
        of any merit and accordingly, we dismiss the same, leaving the parties to bear their
        own costs.
      </text>
    </p>
  </case>
</caseml>

上面的XQuery正在运行,但需要更快地获得结果。

1 个答案:

答案 0 :(得分:9)

要跨大量文档快速检查原子,您需要配置范围索引,它指示MarkLogic在索引时提取值并将它们保存在内存驻留数据结构中,以便无需触摸磁盘即可访问它们。由于您需要特定路径上的值,因此您需要配置路径范围索引。重建索引后,您可以使用cts:values来检索值。您可以选择将cts:query传递给调用,以限制符合某些条件的文档。