我使用下面提到的查询从存储在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正在运行,但需要更快地获得结果。
答案 0 :(得分:9)
要跨大量文档快速检查原子,您需要配置范围索引,它指示MarkLogic在索引时提取值并将它们保存在内存驻留数据结构中,以便无需触摸磁盘即可访问它们。由于您需要特定路径上的值,因此您需要配置路径范围索引。重建索引后,您可以使用cts:values
来检索值。您可以选择将cts:query
传递给调用,以限制符合某些条件的文档。