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;
}
예제 #2
0
        // 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;
                }