在solr 5.3 json facets中的分页

时间:2016-02-10 08:19:58

标签: solr solrj solr5

我使用solrj API在solr 5.3中运行json facet查询,每个查询也有很多子面(可以是4-5字段深)。索引文档总数超过800万。我从NamedList对象中的响应中提取facets结果。

但我希望得到分面的分页结果。现在,我一次性得到了整个结果,但它可以“内存不足”#34;将来。

   {  
   "ComputerName_s":{  
      "allBuckets":true,
      "type":"terms",
      "field":"ComputerName_s",
      "limit":-1,
      "facet":{  
         "ProcessName_s":{  
            "type":"terms",
            "field":"ProcessName_s",
            "limit":-1,
            "facet":{  
               "PID_i":{  
                  "type":"terms",
                  "field":"PID_i",
                  "limit":-1,
                  "facet":{  
                     "timestamp":{  
                        "type":"terms",
                        "field":"timestamp",
                        "limit":-1,
                        "facet":{  
                           "max(Memory_l)":"max(Memory_l)",
                           "avg(Memory_l)":"avg(Memory_l)",
                           "min(ElapsedTime_l)":"min(ElapsedTime_l)"
                        }
                     }
                  }
               }
            }
         }
      }
   }
}

例如以上是json.facet查询的示例。那么,如何设置每个字段的偏移量和限制并获得分页结果。

此外,我可以获得CSV格式的分面结果,而不是像NamedList结构那样复杂的树,因为我试图通过"来模拟"组。 sql的子句,将这个结构转换为逐行结构非常耗时。

1 个答案:

答案 0 :(得分:0)

据我所知,facet功能没有深刻的分页支持。只有标准的分页(非常低效)。

您可以使用字段:facet.offset和facet.limit来创建分页结果。

但是 - Solr会重新计算每个查询的结果 - 所以要求第2页也会让Solr重新计算第一页数据(这就是我说它效率低的时候的意思)。