我在 Marklogic 数据库中有大约 20 个 lacs 文档。我想要我的搜索应用程序中的文档总数进行分页。为了获得我正在使用的总数
xdmp:estimate(cts:search(doc(), $query))
其中 $query 是各种查询的组合cts:and-query
。但我没有得到正确的总数。当 $query 为空时,它显示的计数比数据库中的文档总数高得多。当我使用
xdmp:estimate(doc())
它向我显示了正确的总数,但它将是静态总数,不会根据查询而改变。我希望根据响应特定查询返回的结果得出总计,这就是为什么我将 $query 作为参数传递,但它没有显示正确的总计。fn:count()
显示正确的总数,但当文档数量约为 20 lacs 时fn:count()
不起作用,因为fn:count()
慢于xdmp:estimate()
.
请帮助我获取响应用户输入的搜索词而返回的正确文档总数。
要了解这里发生的情况,请首先阅读以下架构白皮书:http://resources.marklogic.com/library/media/inside-marklogic http://resources.marklogic.com/library/media/inside-marklogic
现在尝试这个测试用例:
xdmp:estimate(doc()),
xdmp:estimate(cts:search(doc(), ()))
第一个表达式将计算文件在数据库中。第二个表达式将计算文档片段在数据库中。因此,如果结果不同,您可能配置了片段根或片段父级。一些特殊文档还会创建额外的片段:我认为拼写词典和同义词库文档可以做到这一点。
如果要将估计限制为 XML 文档根,请在可搜索表达式中指定文档根 QName,或使用/*
如果您不关心根元素名称。
xdmp:estimate(cts:search(/*, ()))
您还可以使用 cts:query 参数来指定仅出现在您要计数的文档中的 QName。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)