作为指定here https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results光标标记是无状态的,但我不明白它是如何解决无状态的深度分页问题的。 solr 是否按唯一键字段排序存储索引数据,如果是这样,那么它将澄清我的困惑。
如果我错了,请解释光标标记如何解决深度分页。因为cursormark是无状态的,所以每次请求查询时都需要对cursormark进行排序和计算,这类似于start=#start-position。
从您引用的链接...
Solr 中的游标是一个逻辑概念,不涉及在服务器上缓存任何状态信息。相反,返回给客户端的最后一个文档的排序值用于计算表示排序值的有序空间中的逻辑点的“标记”。可以在后续请求的参数中指定该“标记”,以告诉 Solr 从哪里继续。
在使用cursorMark 的限制的解释中进一步详细阐述了这一点...
光标标记值是根据结果中每个文档的排序值计算的,这意味着具有相同排序值的多个文档将产生相同的光标标记值,如果其中一个是结果页面上的最后一个文档。在这种情况下,使用该cursorMark 的后续请求将不知道应该跳过哪些具有相同标记值的文档。要求将 uniqueKey 字段用作排序条件中的子句可保证返回确定性排序,并且每个cursorMark 值都将标识文档序列中的唯一点。
如果这不能帮助您澄清事情,我可以提供的下一个最佳解释是将光标视为编码的filter告诉 Solr 跳过排序字段中值位于某些特定值“之前”(基于 asc/desc 排序顺序)的所有文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)