public static function searchProducts($search_query, $p = 1, $n = 0, &$other) { if ($n == 0) { $n = (int) Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE')); } $p = 1; $other = false; $search_query = self::sanitize($search_query, 1); $start = ($p - 1) * $n; $rows = $n; global $cookie; //set the price field fro country $price_field = 'offer_price'; if ($cookie->id_country == 110) { $price_field = 'offer_price_in'; } if ($cookie->id_currency == 4) { $price_field = $price_field . "_rs"; } // create a client instance $client = SolrSearch::getClient(); // get a select query instance $query = $client->createSelect(); $dismax = $query->getDisMax(); $dismax->setPhraseFields('name'); $dismax->setQueryFields('name^10 text^1.2 tags^3 reference^10 style_tips^15'); $catFilter = $query->createFilterQuery('cat')->setQuery('+cat_id:1'); $query->setQuery($search_query); $query->addSort('inStock', Solarium_Query_Select::SORT_DESC); $orderby = Tools::getValue('orderby'); $orderway = Tools::getValue('orderway'); if ($orderby && $orderway) { $way = Solarium_Query_Select::SORT_DESC; if ($orderby == 'price') { $orderby = $price_field; if ($orderway == 'asc') { $way = Solarium_Query_Select::SORT_ASC; } else { $way = Solarium_Query_Select::SORT_DESC; } } elseif ($orderby == 'discount') { $orderby = 'discount'; } elseif ($orderby == 'hot') { $orderby = 'sales'; } elseif ($orderby == 'new') { $orderby = 'date_add'; } $query->addSort($orderby, $way); /*if($orderby != 'hot') $query->addSort('sales', Solarium_Query_Select::SORT_DESC);*/ } else { $query->addSort('score', Solarium_Query_Select::SORT_DESC); $query->addSort('date_add', Solarium_Query_Select::SORT_DESC); //$query->addSort('sales', Solarium_Query_Select::SORT_DESC); } //$query->addSort('sales', Solarium_Query_Select::SORT_DESC); //$query->addSort('date_add', Solarium_Query_Select::SORT_DESC); $facetSet = $query->getFacetSet(); $facetSet->setMinCount(1); $facetSet->createFacetField('cat_id')->setField('cat_id'); $facet = $facetSet->createFacetRange('priceranges'); $facet->setField($price_field); $facet->setStart(0); if ($cookie->id_currency == 4) { $facet->setGap(500); $facet->setEnd(10000); } else { $facet->setGap(50); $facet->setEnd(200); } $facet->addExclude($price_field); $facet->setInclude(Solarium_Query_Select_Component_Facet_Range::INCLUDE_UPPER); $facet->setOther(Solarium_Query_Select_Component_Facet_Range::OTHER_AFTER); $facet = $facetSet->createFacetRange('slaranges'); $facet->setField('shipping_sla'); $facet->setStart(0); $facet->setGap(5); $facet->setEnd(20); $facet->setInclude(Solarium_Query_Select_Component_Facet_Range::INCLUDE_UPPER); $facet->setOther(Solarium_Query_Select_Component_Facet_Range::OTHER_AFTER); $facet->addExclude('shipping_sla'); $facet = $facetSet->createFacetField('fabric'); $facet->setField('fabric'); $facet->addExclude('fabrics'); $facet = $facetSet->createFacetField('is_customizable'); $facet->setField('is_customizable'); $facet->addExclude('customizations'); $facet = $facetSet->createFacetField('color'); $facet->setField('color'); $facet->addExclude('colors'); /*$facet = $facetSet->createFacetField('brand_id'); $facet->setField('brand_id'); $facet->addExclude('brands');*/ $query->setStart($start)->setRows($rows); $resultset = $client->select($query); if ($resultset->getNumFound() == 0) { $dismax->setMinimumMatch(0); $resultset = $client->select($query); $other = true; } SolrSearch::cacheResult($query, $resultset); return $resultset; }