加快solr分页

时间:2011-06-22 20:55:26

标签: solr

我已经通过在查询中包含上一页的最后一个ID来优化mysql数据的分页,所以不是“LIMIT 200,20”,而是“WHERE id < $ last_id_from_previous_page LIMIT 20“

这大大加快了mysql数据的分页。 现在我正在寻找类似于我的solr查询的东西,我想知道这是否可能。

使用我的solr php库我这样搜索:

$solr->search($search_term, $start, $limit, $additionalParameters);

我可以在搜索字词参数本身中指定ID必须小于某个数字吗?像“猫和[id< 200]”之类的东西......?这会给我带来solr的性能提升,就像使用mysql一样吗?

2 个答案:

答案 0 :(得分:2)

SOLR支持指定起始行和要返回的行数。这是人们用来做分页的方式。 How to manage "paging" with Solr?

如果您的SOLR搜索库不支持此功能,那么您应该直接进入HTTP搜索界面并直接与SOLR对话。

答案 1 :(得分:1)

仅当您过滤的字段也是您按字段排序的字段时,该字段支持“<”的概念比较。

例如,如果按字母顺序按姓氏排序,则可能很难过滤掉前20个。如果您按照表示日期/时间的数字排序,则可以将其拉出。

实际上,我所知道的数字字段与该文档仅与该搜索相关联。

编辑:我会问一个更深层次的问题......你确定你需要大量优化分页吗?如果您的搜索针对您的用户进行了很好的调整,他们很少需要浏览结果的第一页或第二页才能找到他们要查找的内容。 Solr已经将文档ID保存在初始查询的缓存中,因此这应该已经相当不错了。