分布式检索结果的前翻页与后翻页

对于一个大的分布式检索系统,检索容量可能达到万亿级,如何能够快速展示给用户,而且能够前翻页与后翻页。

1,涉及到Learning to Rank问题,那么基础索引组件就应该先进行预分类,如按时间进行索引,按重要性进行索引,这样能够保证快速查询结果。进行小范围内排序。如果基础索引组件设计就是混乱的,Rank问题就天方夜谭了。

2,关于统计结果数,根据查询条件扫一遍全索引是不现实的。如度娘和谷哥显示的结果数也是通过小范围内的查询结果然后根据概率模型估算出来的,一个好的概率模型能够比较好的逼近真实结果,逼近(Approximation)算法才是是大数据下的可行性方案。

3,前翻页后翻页,对于命中率很低的查询应用,由服务器段进行缓存代价是浩大的。建议客户端进行部分缓存,能够缓存一部分时间戳信息,或id信息,能够保证用户翻页过程中能够连续触发。而不是从头再次扫索引。。。扫索引的IO代价是很大的。连续翻页对这部分的实现也很重要。如大数据下的度娘和谷哥就没有实现跳转功能,而小数据下的BBS则多是根据条件重新刷数据库的。

3.1,如果是按时间翻页,为了处理同一时间戳上的数据覆盖问题,就需要同时利用_version_信息进行排序,如在Solr中可利用sort:startTime desc, _version_ desc,同时根据缓存中记录的偏移量剔除掉同一时间戳上的前页覆盖数据。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>