Solr游标

       “深度分页”是Solr中效率低下的一个问题,随着页码数的加深,Solr越来越难返回查询结果

        这是因为,Solr是无状态的(Solr is basically stateless),用户若要对搜索结果进行分页,必须传递给Solr两个参数(rows、start)。举例来说:用户需要每页50条docs,Page#1的请求参数start=0&rows=50;Page#2的请求参数start=50&rows=50;Page#3的请求参数start=150&rows=50,以此类推。在第N批次时,为使Solr知道需返回哪一批次的50条docs,它需要构建一个内部队列(含有N+50个排序后的结果文档),然后丢弃到前N个docs,返回剩下的50个docs给用户。

        这就意味着,随着分页结果的线性增长,Solr需要越多的内存来维护N+50个docs。简而言之,查询第N页的M条docs,Solr需要得到从第0到第NM个docs,但只展现M个docs给用户。

        解决上述问题的办法是使用游标(Cursors)。游标是Solr中的逻辑概念。它不会包含任何server中的状态信息。当每一批次的最后一个文档的排序值返回给用户时,计算一个“mark”用来表示排序值的有序空间的逻辑点。同时该mark值会被指定下一批查询请求的参数,告知Solr下一次请求从哪开始。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值