如指定的here cursormark是无状态的,但我不知道它是如何解决深度分页问题,如果它是无状态的。 solr是否将索引数据存储在按唯一键字段排序中,如果是这样,那么它将澄清我的困惑。
如果我错了,请解释cursormark如何解决深度分页问题。因为cursormark是无状态的,所以每次请求查询时都需要对cursormark进行排序和clarac,这类似于start = #start-position。
答案 0 :(得分:3)
从你引用的链接......
Solr中的游标是一个逻辑概念,它不涉及在服务器上缓存任何状态信息。 而是返回到客户端的最后一个文档的排序值用于计算"标记"表示排序值的有序空间中的逻辑点。 那"标记"可以在后续请求的参数中指定,以告诉Solr在哪里继续。
在对使用cursorMark ...
的约束的解释中进一步阐述了这一点光标标记值是根据结果 中每个文档的排序值计算的,这意味着具有相同排序值的多个文档将生成相同的Cursor标记值(如果有)它们是结果页面上的最后一个文档。在那种情况下,使用该cursorMark的后续请求将不知道应该跳过具有相同标记值的哪个文档。 要求将uniqueKey字段用作排序条件中的子句,以确保将返回确定性排序,并且每个cursorMark值将标识文档序列中的唯一点。 < / em>的
如果这对您没有帮助澄清一些事情,我可以提供的下一个最佳解释是将cursorMark视为编码的过滤器,告诉Solr跳过所有带有值的文档。排序字段#34;之前&#34; (基于asc / desc排序顺序)一些特定的值。