Example #1
0
 private function find_response()
 {
     if (!isset($this->query)) {
         throw new SolrException('SolrAccessor Exception: query undefined', '7700');
     }
     $query = new SolrQuery();
     $query->setQuery($this->query);
     $query->addField($this->mapping['key']);
     if (is_array($this->fields)) {
         foreach ($this->fields as $field) {
             $query->addField($field);
         }
     }
     if (is_array($this->filters)) {
         foreach ($this->filters as $field => $value) {
             $query->addFilterQuery("{$field}:{$value}");
         }
     }
     if (is_array($this->sorts)) {
         foreach ($this->sorts as $field => $type) {
             $query->addSortField($field, $type);
         }
     }
     if (is_array($this->query_field) && !empty($this->query_field)) {
         $arrQueryFields = array();
         foreach ($this->query_field as $field => $boost) {
             $arrQueryFields[] = $field . '^' . $boost;
         }
         $query->setParam('qf', implode(' ', $arrQueryFields));
         $query->setParam('qt', 'dismax');
     }
     if (isset($this->start)) {
         $query->setStart($this->start);
     }
     if (isset($this->rows)) {
         $query->setRows($this->rows);
     }
     if (is_array($this->facets)) {
         $query->setFacet(true);
         $query->setFacetMinCount($this->facet_min_count);
         foreach ($this->facets as $facet) {
             $query->addFacetField($facet['filed']);
             if (isset($facet['limit'])) {
                 $limit = intval($facet['limit']);
                 $query->setFacetLimit($limit);
             }
             if (isset($facet['sort'])) {
                 $sort = $facet['sort'] == 'index' ? $query::FACET_SORT_INDEX : $query::FACET_SORT_COUNT;
                 $query->setFacetSort($sort, $facet['filed']);
             }
         }
     }
     if (!empty($this->facet_query_array) && is_array($this->facet_query_array)) {
         $query->setFacet(true);
         $query->setFacetMinCount($this->facet_min_count);
         foreach ($this->facet_query_array as $valFacetQuery) {
             $query->addFacetQuery($valFacetQuery);
         }
     }
     $client = MPF_Solr_Factory::get_instance()->get_client($this->mapping['instance']);
     $response = $client->query($query);
     $debug = explode("\n", $client->getDebug());
     //TODO use getRawRequest instead of debug
     $raw_request = @$debug[13];
     if (substr($raw_request, 0, 2) != 'q=') {
         $raw_request = @$debug[12];
     }
     MPF::get_instance()->debug(__CLASS__ . '::' . __FUNCTION__ . ':' . @$response->getRequestUrl() . '&' . $raw_request);
     return $response->getResponse();
 }
 public function facet_date()
 {
     $options = array('hostname' => SOLR_SERVER_HOSTNAME, 'port' => SOLR_SERVER_PORT);
     $client = new SolrClient($options);
     $query = new SolrQuery('*:*');
     //$query->setQuery('input_datetime:[2010-01-01T00:00:00Z TO 2010-06-01T00:00:00Z]');
     $query->setFacet(TRUE);
     $query->setFacetSort(SolrQuery::FACET_SORT_INDEX);
     $query->setFacetLimit(20000);
     $query->addFacetDateField('input_datetime');
     //$query->setFacetDateStart('2010-06-01T00:00:00Z');
     $query->setFacetDateStart('2008-06-01T00:00:00Z');
     $query->setFacetDateEnd('2010-12-01T00:00:00Z');
     $query->setFacetDateGap('+1MONTH');
     $query->setFacetDateHardEnd(TRUE);
     //$query->setFacetMinCount(2);
     $query->setFacetOffset(0);
     //$query->setFacetDateStart('2012-01-01T00:00:00:Z', 'input_date');
     //$query->setFacetPrefix('c');
     $updateResponse = $client->query($query);
     $response_array = $updateResponse->getResponse();
     $facet_datas = $response_array->facet_counts->facet_fields;
     echo '<pre>';
     print_r($response_array->facet_counts);
 }
<?php

$query = new SolrQuery();
$query->setFacet(0);
$query->addFacetField('israel')->addFacetField('israel2');
$query->addFacetQuery('silk')->addFacetQuery('name:june');
$query->setFacetPrefix('A')->setFacetPrefix('C', 'june');
$query->setFacetSort(1)->setFacetSort(0, 'june');
//
$query->setFacetLimit(98)->setFacetLimit(44, 'june');
$query->setFacetOffset(110)->setFacetOffset(12, 'june');
$query->setFacetMinCount(4)->setFacetMinCount(30, 'june');
$query->setFacetMissing(1)->setFacetMissing(0, 'june');
$query->setFacetMethod('enum')->setFacetMethod('fc', 'june');
echo $query;
echo "\n";