深度分页
深度分页是指给搜索结果指定一个很大的起始位移。
普通分页在给定一个大的起始位移时效率十分低下,例如start=1000000,rows=10的查询,搜索引擎需要找到前1000010条记录然后再返回最后10条。Solr为了最后10条记录只会检索排序字段,但是前1000010条记录的内部排序开销依然十分大。
普通分页基础上的深度分页对分布式搜索引擎而言甚至是更低效的,因为为了找到正确的10条记录,来自各个分片的前1000010条记录的排序字段需要被返回和聚合在一个聚合节点。
 
使用cursorMark(游标记录)
cursorMark参数允许高效地在大结果集上遍历。它可以在单点或分布式搜索引擎上工作。
怎样使用cursorMark:
1.排序必须包括id字段的严格排序策略,这防止了用lucene记录id做内部排序导致的排序中存在相等的情况。
2.任何包括cursorMark的调用start字段必须是0。
3.第一次请求时传递cursorMark=*。
4.Solr的返回结果中会有nextCursorMark,在下次调用时简单地使用这个值作为cursorMark以继续结果集的分页。
 
深度分页curosrMark实现时要注意的点
1.cursorMark参数自身包含了所有的必要状态,没有服务端的状态。
2.start参数总是返回0,这取决于客户端指出要展示的是什么位置。
3.没必要使用cursorMark排序到底,因为服务端没有保存状态,随时都可以终止排序。
4.你有两种方法知道搜索结果的排序到底了,没有返回和你请求的一样的行数,或者返回的coursorMark和你传递的一样(此时返回的行数为0)。
5.尽管start参数必须是0,每次调用都可以变换row值。
6.修改返回字段和facet字段时,cursorMark也是可以重用的。
7.客户端可以通过再次提交之前的cursorMark高效地往回翻页。

solr使用cursorMark做深度分页的更多相关文章

  1. Solr中使用游标进行深度分页查询以提高效率(适用的场景下)

    通常,我们的应用系统,如果要做一次全量数据的读取,大多数时候,采用的方式会是使用分页读取的方式,然而 分页读取的方式,在大数据量的情况下,在solr里面表现并不是特别好,因为它随时可能会发生OOM的异 ...

  2. 游标 深度分页 deep paging

    Solr Deep Paging(solr 深分页) - ickes的专栏 - CSDN博客 https://blog.csdn.net/xl_ickes/article/details/427725 ...

  3. 大数据学习[16]--使用scroll实现Elasticsearch数据遍历和深度分页[转]

    题目:使用scroll实现Elasticsearch数据遍历和深度分页 作者:星爷 出处: http://lxWei.github.io/posts/%E4%BD%BF%E7%94%A8scroll% ...

  4. elasticsearch深度分页问题

    elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.深度分页方式from + size es 默认采用的 ...

  5. elasticserach数据库深度分页查询的原理

    深度分页存在的问题 https://segmentfault.com/a/1190000019004316?utm_source=tag-newest 在实际应用中,分页是必不可少的,例如,前端页面展 ...

  6. 上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB

    面试题 & 真实经历 面试题:在数据量很大的情况下,怎么实现深度分页? 大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是 ...

  7. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  8. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)

    四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...

  9. 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇

    导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...

随机推荐

  1. 公式推导:【CFNet】

    [CFNet]: Valmadre J, Bertinetto L, Henriques J F, et al. End-to-end representation learning for Corr ...

  2. SQL 中的 IFNULL和NULLIF

    sql 中的IFNULL和NULLIF很容易混淆,在此记录一下. IFNULL IFNULL(expression1, expression2) 如果expression1为null, 在函数返回ex ...

  3. Visual Studio 2010 出现关于ActivityLog.xml错误的解决方案

    在用VS编写程序是第一次会跳出“Visual Studio has encountered an exception.This may be caused by an extension. You c ...

  4. 阿里云香港B区通过IPV6规避Google验证码

    最近买了阿里云香港B来FQ,然而被Google的验证码折磨的死去活来.四处查询,终于找到了一个合适的方案. 添加IPV6支持 阿里云香港是没有IPV6地址的,需要一个tunnel,这边使用HE.NET ...

  5. Mysql权限速查表以及权限详解

    一.前言 很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话.因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪 些权限. 现在很多mysql用着root账户 ...

  6. 《LOST》 电视

    还没看正剧,所以转来帮助看电视 从起源到终点:<LOST>剧情全解析(一)   此文是LOST完结之后的剧情解析,剧透,慎入   从起源到终点:<LOST>剧情全解析(一) 转 ...

  7. 【web】之获取服务器tomcat下webapps目录路径

    String realPath = req.getServletContext().getRealPath("/"); String realPathParent=(new Fil ...

  8. T-SQL select语句连接两个表

    当一个表中按条件出现多个记录时,会按照匹配条件生成多个结果记录.left out 和right out 是对不能匹配的记录发生作用.

  9. Lucene suggest [转]

      The Big Data Zone is presented by Splunk, the maker of data analysis solutions such as Hunk, an an ...

  10. elasticsearch 5.1 别的机器无法访问9200端口

    版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显 ...