zoukankan      html  css  js  c++  java
  • solr使用cursorMark做深度分页

    深度分页
    深度分页是指给搜索结果指定一个很大的起始位移。
    普通分页在给定一个大的起始位移时效率十分低下,例如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高效地往回翻页。
  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9510810.html
Copyright © 2011-2022 走看看