예제 #1
0
 protected function initialize_cluster($reply_set, $query, $config)
 {
     if (property_exists($reply_set, 'content') && property_exists($reply_set->content, 'cluster')) {
         $clustering_id = $this->get_meta()->get_cluster_id();
         $facet_helper = AfsFacetHelperRetriever::get_helper($clustering_id, $this->facets);
         $this->update_meta($facet_helper);
         foreach ($reply_set->content->cluster as $cluster) {
             $helper = new AfsClusterHelper($cluster, $this->get_meta(), $facet_helper, $query, $config);
             $this->clusters[$helper->get_id()] = $helper;
         }
     }
 }
예제 #2
0
 public function testClusterAsArray()
 {
     $facet_id = 'marketing';
     $facet_label = 'Facet label';
     $value_id = 'OP';
     $value_label = 'Youhou';
     $query = new AfsQuery();
     $input = json_decode('{
         "afs:t": "FacetTree",
         "node": [ {
                 "key": "' . $value_id . '",
                 "labels": [ { "label": "' . $value_label . '" } ],
                 "items": 67
             } ],
         "layout": "TREE",
         "type": "BOOL",
         "id": "' . $facet_id . '",
         "labels": [ { "label": "' . $facet_label . '" } ]
     }');
     $config = new AfsHelperConfiguration();
     $facet_helper = new AfsFacetHelper($input, $query, $config);
     $input = json_decode('{
         "uri": "Catalog",
         "totalItems": 61,
         "totalItemsIsExact": true,
         "pageItems": 20,
         "firstPageItem": 1,
         "lastPageItem": 20,
         "durationMs": 6,
         "cluster": "' . $facet_id . '",
         "firstPaFId": 1,
         "lastPaFId": 1,
         "producer": "SEARCH",
         "totalItemsInClusters": 2,
         "nbClusters": 2
     }');
     $meta = new AfsMetaHelper($input);
     $input = json_decode('{
         "id": "' . $value_id . '",
         "totalItems": 6,
         "totalItemsIsExact": true,
         "pageItems": 1,
         "firstPageItem": 1,
         "lastPageItem": 1,
         "reply": [
             {
                 "docId": 64,
                 "uri": "166_en",
                 "title": [
                     {
                         "afs:t": "KwicString",
                         "text": "HTC Touch Diamond"
                     }
                 ],
                 "relevance": { "rank": 1 }
             }
         ]
     }');
     $helper = new AfsClusterHelper($input, $meta, $facet_helper, $query, $config);
     $result = $helper->format();
     $this->assertEquals($value_id, $result['id']);
     $this->assertEquals($value_label, $result['label']);
     $this->assertEquals(6, $result['total_replies']);
     # No query coder provided --> no link
     $this->assertEquals('', $result['link']);
     $replies = $result['replies'];
     $this->assertFalse(empty($replies));
     $this->assertEquals(1, count($replies));
     $this->assertEquals('166_en', $replies[0]['uri']);
 }