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; } } }
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']); }