正如所指定的,这里指针是无状态的,但是我不知道它如何解决深度分页问题,如果它是无状态的。solr是否将索引数据按唯一键字段排序存储,如果是这样的话,它将澄清我的困惑。
如果我错了,请解释如何使用cursormark解决深度分页。因为cursormark是无状态的,所以它还需要在每次请求查询时对cursormark进行排序和claculate,这类似于start=#start-start。
发布于 2015-03-12 18:09:12
从你提到的链接..。
Solr中的游标是一个逻辑概念,它不涉及缓存服务器上的任何状态信息。相反,返回给客户端的最后一个文档的排序值用于计算一个“标记”,表示排序值的有序空间中的一个逻辑点。可以在后续请求的参数中指定“标记”,以告诉Solr在哪里继续。
这一点在对使用cursorMark的限制的解释中作了进一步的阐述。
游标值是根据结果中每个文档的排序值计算的,这意味着多个具有相同排序值的文档将产生相同的游标值,如果其中一个是结果页上的最后一个文档。在这种情况下,使用该cursorMark的后续请求将不知道应该跳过哪些具有相同标记值的文档。要求在排序条件中使用uniqueKey字段作为子句,可以保证返回确定性排序,并且每个cursorMark值都将标识文档序列中的唯一点。
如果这无助于为您澄清问题,那么我可以提供的下一个最好的解释是,将cursorMark看作一个编码过滤器,告诉Solr跳过“前面”(基于asc/desc排序顺序)字段中所有带有值的文档。
https://stackoverflow.com/questions/28185133
复制相似问题