在solr查询中执行groupby之后,我有以下格式的响应。我使用的solr版本3.5在创建阵列时更改密钥的名称
"grouped":{
"channel_id":{
"matches":48,
"ngroups":26,
"groups":[{
"groupValue":"204",
"doclist":{"numFound":1,"start":0,"docs":[
{
"channel_name":"ZeeTv",
"channel_num":4,
"title":"The Name",
"channel_id":"204"
}},
{
"groupValue":"166",
"doclist":{"numFound":2,"start":0,"docs":[
{
"channel_name":"Sony",
"channel_num":2,
"title":"The Name",
"channel_id":"166",
{
"channel_name":"Sony",
"channel_num":2,
"title":"The Puzzle",
"channel_id":"166"
}}]}}
我正在在以下列方式的阵列响应:
for(var chl in data.grouped.channel_id.groups) {
config['playlist'].push(data.grouped.channel_id.groups[chl]['doclist']['docs']);
}
因此形成各groupValue
的单个阵列。数组的struture是:
"0"=>{"0"=>"value"},"1"=>{"0"=>"result1","1"=>"result2"}
但我想改变键名称,即“0”,“1”,而创建一个数组,这样我可以做config['playlist']['166']
检查所有的groupValue
从响应从阵列中显示此channel_id
。可以做到这一点,如果是这样做。我期待下面:
"204"=>{"0"=>"value"},"166"=>{"0"=>"result1","1"=>"result2"}
而且如果可能的话可以Solr的查询进行,使得在响应channel_num
来按升序排列,即第一个结果为channel_num 2,然后4.我已经做groupby:channel_id
您的第二个代码块在Firefox之外是无效的javascript。此外,所有for-each循环均缺少'hasOwnProperty'检查。 –
感谢第一个代码块为我工作如预期 – user850234
您不应该在阵列上使用'for' ...'in'。使用'len = data.grouped.channel_id.groups.length;代替(var chl = 0; chl