function getCloud($solr, $field, $query, $fq, $maxsize = 0, $lang = '', $country = '', $maxhour = 0, $multi_term_boost = 0, $multi_term_keep = false, $debug = false) { $response = null; $ret = ""; $maxsizequery = $maxsize; if ($maxsize == 0) { $maxsizequery = 1000; } else { if ($multi_term_boost > 1 || $multi_term_keep) { $maxsizequery = 3 * $maxsize; } } $params = array(); $params['facet'] = 'true'; $params['facet.field'] = $field; $params['facet.mincount'] = '1'; $params['facet.limit'] = $maxsizequery; $params['fl'] = $field; $params['hl'] = 'false'; $params['spellcheck'] = 'false'; if ($debug) { $params['debugQuery'] = 'true'; } else { $params['debugQuery'] = 'false'; } if (is_null($fq)) { $fq = array(); } if (!empty($lang)) { array_push($fq, "language:" . urlencode($lang)); } if (!empty($country)) { array_push($fq, "country:" . urlencode($country)); } $params['fq'] = $fq; $crit = ''; if (!is_null($query)) { $crit = $query; } if ($maxhour > 0) { if ($crit != '') { $crit .= " AND "; } $crit .= "(createtime:[NOW-" . $maxhour . "HOUR TO *])"; } if ($crit == '') { $crit = "*:*"; } $response = $solr->search($crit, "0", "1", $params); if ($response->getHttpStatus() == 200) { //print_r( $response->getRawResponse()); $q = $response->getRawResponse(); $ret = filterCloud($response, $field, $maxsize, $multi_term_boost, $multi_term_keep, $debug); } return $ret; }
// Display results list $teasers = get_object_vars($response->highlighting); foreach ($response->response->docs as $doc) { if (count($elevated_ids) > 0 && in_array($doc->id, $elevated_ids)) { continue; } // do not display twice an elevated item in result list $res .= displayResultItem($doc, $teasers); } echo $res; // Display tag cloud for the search result set ?> <hr> <strong>Tag cloud for the current result set</strong><br /> <?php $data = filterCloud($response, 'tag_cloud', $tag_cloud_size, 3, true, true); echo displayCloud($data); // Display facets echo '<hr>'; $facet_counts = $response->facet_counts; if ($facet_counts) { $res = ''; $count = 0; foreach ($facet_counts->facet_fields as $facetfield => $facet) { if ($facetfield == 'tag_cloud') { continue; } // not this one if (!get_object_vars($facet)) { continue; }