我使用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的子句,将这个结构转换为逐行结构非常耗时。
答案 0 :(得分:0)
据我所知,facet功能没有深刻的分页支持。只有标准的分页(非常低效)。
您可以使用字段:facet.offset和facet.limit来创建分页结果。
但是 - Solr会重新计算每个查询的结果 - 所以要求第2页也会让Solr重新计算第一页数据(这就是我说它效率低的时候的意思)。