Solr facet分页

时间:2012-05-25 15:46:00

标签: solr count pagination facet

如何在Solr中我可以对一个方面进行分页?我知道我有facet.offset来跳过记录,但我怎么知道有多少总记录有这个方面?

2 个答案:

答案 0 :(得分:2)

您需要应用Solr Patch SOLR-2242才能获得Facet不同的计数 总计数可能有助于分页。

答案 1 :(得分:0)

在Solr 5.3及以上版本中,使用facet获取文档总数,

只需使用,

facet=on

例如

http://<solr-url>/select?facet=on&indent=on&q=*:*&rows=0&wt=json

然后你得到一个facets对象作为响应,它看起来像,

{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":3,
    "params":{
      "q":"*:*",
      "indent":"on",
      "rows":"0",
      "facet":"on",
      "wt":"json"}},
  "response":{"numFound":8,"start":0,"maxScore":1.0,"docs":[]
  },
  "facet_counts":{
    "facet_queries":{},
    "facet_fields":{},
    "facet_ranges":{},
    "facet_intervals":{},
    "facet_heatmaps":{}}
}

你从numFound获得response,这是该solr核心中的记录总数

另一种方式

如果您有任何方面查询,请使用

facet=on&json.facet={}

例如

http://<solr-url>/select?facet=on&indent=on&json.facet={}&q=*:*&rows=0&wt=json

然后你得到一个facets对象作为响应,它看起来像,

{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":3,
    "params":{
      "json.facet":"{}",
      "q":"*:*",
      "indent":"on",
      "rows":"0",
      "facet":"on",
      "wt":"json"}},
  "response":{"numFound":80,"start":0,"maxScore":1.0,"docs":[]
  },
  "facet_counts":{
    "facet_queries":{},
    "facet_fields":{},
    "facet_ranges":{},
    "facet_intervals":{},
    "facet_heatmaps":{}},
  "facets":{
    "count":80}}

facets对象得到count,这是最大记录数