1

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

但我想获得分面的分页结果。现在,我一口气得到了整个结果,但将来它可能会“内存不足”。

   {  
   "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 的“group by”子句,并且将这种结构逐行转换为非常耗时结构体。

4

1 回答 1

0

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

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

但是 - Solr 将重新计算每个查询的结果 - 因此请求第二页将使 Solr 也重新计算第一页数据(这就是我说它效率低下时的意思)。

于 2016-02-11T09:50:43.190 回答