我在Marklogic数据库中有大约20个lacs文档.我希望我的搜索应用程序中的文档总数用于分页.获得我正在使用的总数
xdmp:estimate(cts:search(doc(), $query))
Run Code Online (Sandbox Code Playgroud)
其中$ query是组合在一起的各种查询的组合cts:and-query.但我没有得到正确的总数.当$ query为空时,它显示的计数远远高于数据库中的文档总数.我用的时候
xdmp:estimate(doc())
Run Code Online (Sandbox Code Playgroud)
它显示了正确的总数,但它将是静态总数,它不会根据查询而改变.我想根据响应特定查询返回的结果来计算总数,这就是为什么我将$ query作为参数传递但是它没有显示正确的总数.fn:count()显示正确的总数但当文件数量大约为20 lacs时则fn:count()不起作用,因为fn:count()比较慢xdmp:estimate().
请帮助我获取为响应用户输入的搜索词而返回的正确文档总数.
mbl*_*ele 10
要了解这里发生了什么,首先阅读http://resources.marklogic.com/library/media/inside-marklogic上的架构白皮书.
现在试试这个测试用例:
xdmp:estimate(doc()),
xdmp:estimate(cts:search(doc(), ()))
Run Code Online (Sandbox Code Playgroud)
第一个表达式将计算数据库中的文档数.第二个表达式将计算数据库中文档片段的数量.因此,如果结果不同,您可能已配置了片段根或片段父.一些特殊文档也会创建额外的片段:我认为拼写词典和同义词文档可以做到这一点.
如果要将估计值限制为XML文档根,请在可搜索表达式中指定文档根QName,或者/*如果您不关心根元素名称,请使用它.
xdmp:estimate(cts:search(/*, ()))
Run Code Online (Sandbox Code Playgroud)
您还可以使用cts:query参数指定仅出现在要计算的文档中的QName.
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |