在Xpath上运行xdmp:plan()
,在执行计划中我发现了以下内容:
<qry:info-trace>Selected n fragments</qry:info-trace>
但是在xdmp:plan()
上运行cts:search(/Xpath,cts:and-query(()))
,我得到了
<qry:info-trace>Selected n fragments to filter</qry:info-trace>
为什么在第二种情况下“过滤”缺失?
答案 0 :(得分:2)
使用7.0-3和cts:search
:
xdmp:plan(cts:search(/a/b/c, cts:and-query(())))
=>
...
<qry:info-trace>Selected N fragments to filter</qry:info-trace>
...
而XPath:
xdmp:plan(/a/b/c)
=>
...
<qry:info-trace>Selected N fragments</qry:info-trace>
....
差异主要是审美。 cts:search
函数接受unfiltered
选项,而XPath没有这样的选项:XPath结果总是被过滤。该计划仅在未经过滤的搜索时提及过滤,和过滤已启用。
xdmp:plan(cts:search(/a/b/c, cts:and-query(()), 'unfiltered'))
=>
...
<qry:info-trace>Selected N fragments</qry:info-trace>
....
请参阅https://docs.marklogic.com/guide/performance/unfiltered,了解默认情况下启用过滤的原因,以及在某些情况下您可能希望禁用过滤的原因。