我的 marklogic 服务器中有大约 53,00,000 个文档,每个文档包含一条记录。
xquery version "1.0-ml";
declare namespace pa = "http://www.contata.com/pa";
let $query :=
cts:or-query((
cts:element-word-query(
xs:QName("pa:name"), "SMITH"
),
cts:element-word-query(
xs:QName("pa:address-1"), ""
),
cts:element-word-query(
xs:QName("pa:address-2"), ""
),
cts:element-word-query(
xs:QName("pa:address-3"), ""
),
cts:element-word-query(
xs:QName("pa:city"), ""
)
)) return
cts:search(fn:doc(),$query)[5100000 to 5300000]
当我执行上述查询时,需要很长时间才能执行并给出以下错误
[1.0-ml] XDMP-EXTIME: cts:search(fn:doc(), cts:or-query((cts:element-word-query(xs:QName("pa:name"), "SMITH", ( "lang=en"), 1), cts:element-word-query(xs:QName("pa:address-1"), "", ("lang=en"), 1), cts:element-word -query(xs:QName("pa:address-2"), "", ("lang=en"), 1), ...))) -- 超过时间限制
但是当我执行cts:search(fn:doc(),$query)[1000 to 2000]
它成功执行。
还有一个问题,如果我已经加载了所有文档,那么在从 RecordLoader Utility 加载后如何在它们上创建索引。