0

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が形成されます。配列の構造は次のとおりです。

"0"=>{"0"=>"value"},"1"=>{"0"=>"result1","1"=>"result2"}

しかし、配列の作成中にキー名、つまり「0」、「1」をgroupValue応答から変更して、配列からconfig['playlist']['166']すべてのショーをチェックできるようにしたいと考えていchannel_idます。これを行うことができますか?私は次のことを期待しています:

"204"=>{"0"=>"value"},"166"=>{"0"=>"result1","1"=>"result2"}

また、可能であればchannel_num、応答が昇順になるようにsolrクエリを作成できます。つまり、最初の結果がchannel_num 2、次に4になります。groupby:channel_id

4

2 に答える 2

2

そのことについて何?

for(var chl in data.grouped.channel_id.groups) {
    config['playlist'][data.grouped.channel_id.groups[chl].groupValue] = data.grouped.channel_id.groups[chl]['doclist']['docs'];
}

プッシュは、配列の最後に要素を追加するためにあります。ただし、Javascript オブジェクトは単なるハッシュ テーブルであるため、そのように使用できます。

ちなみに、次のコードを使用すると、コードをより簡単にすることができますfor each

for each(var chl in data.grouped.channel_id.groups) {
    config['playlist'][ch1.groupValue] = ch1['doclist']['docs'];
}
于 2012-06-06T09:25:17.523 に答える
2

Pikrass は正しく答えました... での注文channel_numに関する限り、クエリに次を追加してみてください:

&sort=channel_num asc
于 2012-06-06T10:04:15.707 に答える