Markligic Cts:Search中超出了时间限制

时间:2012-04-18 06:48:22

标签: marklogic

我的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加载后如何在它们上创建索引。

2 个答案:

答案 0 :(得分:4)

查看“未过滤”选项,并考虑使用“搜索:搜索”。

你也可以增加时间限制,但可能不希望这样。使用筛选搜索获得第500000个结果需要检查500000个文档,这可能需要最多500000个磁盘读取。如果您的磁盘每秒可以管理100个,那就是5000秒。

答案 1 :(得分:1)

您正在显示200.000个搜索结果。尽量少展示一下。如果您使用的是查询控制台或CQ分析器,您会发现不是cts:搜索需要花费很多时间,而是获得这些200k文档。

HTH!