/** * Add request settings for the debug component * * @param Solarium_Query_Select_Component_Debug $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { $request->addParam('debugQuery', 'true'); $request->addParam('debug.explain.structured', 'true'); $request->addParam('explainOther', $component->getExplainOther()); return $request; }
/** * Build request for an analysis query * * @param Solarium_Query_Analysis $query * @return Solarium_Client_Request */ public function build($query) { $request = new Solarium_Client_Request(); $request->setHandler($query->getHandler()); $request->addParam('wt', 'json'); $request->addParam('analysis.query', $query->getQuery()); $request->addParam('analysis.showmatch', $query->getShowMatch()); return $request; }
/** * Add request settings for DistributedSearch * * @param Solarium_Query_Select_Component_DistributedSearch $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { // add shard fields to request $shards = array_values($component->getShards()); if (count($shards)) { $request->addParam('shards', implode(',', $shards)); } $request->addParam('shards.qt', $component->getShardRequestHandler()); return $request; }
/** * Add request settings for Dismax * * @param Solarium_Query_Select_Component_Dismax $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function buildComponent($component, $request) { // enable dismax $request->addParam('defType', $component->getQueryParser()); $request->addParam('q.alt', $component->getQueryAlternative()); $request->addParam('qf', $component->getQueryFields()); $request->addParam('mm', $component->getMinimumMatch()); $request->addParam('pf', $component->getPhraseFields()); $request->addParam('ps', $component->getPhraseSlop()); $request->addParam('qs', $component->getQueryPhraseSlop()); $request->addParam('tie', $component->getTie()); $request->addParam('bq', $component->getBoostQuery()); $request->addParam('bf', $component->getBoostFunctions()); return $request; }
/** * Add request settings for Grouping * * @param Solarium_Query_Select_Component_Grouping $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { // enable grouping $request->addParam('group', 'true'); $request->addParam('group.field', $component->getFields()); $request->addParam('group.query', $component->getQueries()); $request->addParam('group.limit', $component->getLimit()); $request->addParam('group.offset', $component->getOffset()); $request->addParam('group.sort', $component->getSort()); $request->addParam('group.main', $component->getMainResult()); $request->addParam('group.ngroups', $component->getNumberOfGroups()); $request->addParam('group.cache.percent', $component->getCachePercentage()); $request->addParam('group.truncate', $component->getTruncate()); return $request; }
public function testAddParamOverwrite() { $params = array('param1' => 1); $this->_request->setParams($params); $this->_request->addParam('param1', 2, true); $this->assertEquals(array('param1' => 2), $this->_request->getParams()); }
/** * Build request for a ping query * * @param Solarium_Query_Ping $query * @return Solarium_Client_Request */ public function build($query) { $request = new Solarium_Client_Request(); $request->setHandler($query->getHandler()); $request->setMethod(Solarium_Client_Request::METHOD_GET); $request->addParam('wt', 'json'); return $request; }
/** * Build request for a select query * * @param Solarium_Query $query * @return Solarium_Client_Request */ public function build($query) { $request = new Solarium_Client_Request(); $request->setHandler($query->getHandler()); $request->addParams($query->getParams()); $request->addParam('wt', 'json'); return $request; }
/** * Add request settings for the stats component * * @param Solarium_Query_Select_Component_Stats $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { // enable stats $request->addParam('stats', 'true'); // add fields foreach ($component->getFields() as $field) { $request->addParam('stats.field', $field->getKey()); // add field specific facet stats foreach ($field->getFacets() as $facet) { $request->addParam('f.' . $field->getKey() . '.stats.facet', $facet); } } // add facet stats for all fields foreach ($component->getFacets() as $facet) { $request->addParam('stats.facet', $facet); } return $request; }
/** * Build request for a select query * * @param Solarium_Query_Select $query * @return Solarium_Client_Request */ public function build($query) { $request = new Solarium_Client_Request(); $request->setHandler($query->getHandler()); // add basic params to request $request->addParam('q', $query->getQuery()); $request->addParam('start', $query->getStart()); $request->addParam('rows', $query->getRows()); $request->addParam('fl', implode(',', $query->getFields())); $request->addParam('wt', 'json'); $request->addParam('q.op', $query->getQueryDefaultOperator()); $request->addParam('df', $query->getQueryDefaultField()); // add sort fields to request $sort = array(); foreach ($query->getSorts() as $field => $order) { $sort[] = $field . ' ' . $order; } if (count($sort) !== 0) { $request->addParam('sort', implode(',', $sort)); } // add filterqueries to request $filterQueries = $query->getFilterQueries(); if (count($filterQueries) !== 0) { foreach ($filterQueries as $filterQuery) { $fq = $this->renderLocalParams($filterQuery->getQuery(), array('tag' => $filterQuery->getTags())); $request->addParam('fq', $fq); } } // add components to request $types = $query->getComponentTypes(); foreach ($query->getComponents() as $component) { $componentBuilderClass = $types[$component->getType()]['requestbuilder']; if (!empty($componentBuilderClass)) { $componentBuilder = new $componentBuilderClass(); $request = $componentBuilder->build($component, $request); } } return $request; }
/** * Add request settings for Spellcheck * * @param Solarium_Query_Select_Component_Spellcheck $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function buildComponent($component, $request) { // enable spellcheck $request->addParam('spellcheck', 'true'); $request->addParam('spellcheck.q', $component->getQuery()); $request->addParam('spellcheck.build', $component->getBuild()); $request->addParam('spellcheck.reload', $component->getReload()); $request->addParam('spellcheck.dictionary', $component->getDictionary()); $request->addParam('spellcheck.count', $component->getCount()); $request->addParam('spellcheck.onlyMorePopular', $component->getOnlyMorePopular()); $request->addParam('spellcheck.extendedResults', $component->getExtendedResults()); $request->addParam('spellcheck.collate', $component->getCollate()); $request->addParam('spellcheck.maxCollations', $component->getMaxCollations()); $request->addParam('spellcheck.maxCollationTries', $component->getMaxCollationTries()); $request->addParam('spellcheck.maxCollationEvaluations', $component->getMaxCollationEvaluations()); $request->addParam('spellcheck.collateExtendedResults', $component->getCollateExtendedResults()); $request->addParam('spellcheck.accuracy', $component->getAccuracy()); return $request; }
/** * Event hook to customize the request object * * @param Solarium_Query $query * @param Solarium_Client_Request $request * @return void */ public function postCreateRequest($query, $request) { foreach ($this->getCustomizations() as $key => $customization) { // first validate if (!$customization->isValid()) { throw new Solarium_Exception('Request customization with key "' . $key . '" is invalid'); } // apply to request, depending on type switch ($customization->getType()) { case Solarium_Plugin_CustomizeRequest_Customization::TYPE_PARAM: $request->addParam($customization->getName(), $customization->getValue(), $customization->getOverwrite()); break; case Solarium_Plugin_CustomizeRequest_Customization::TYPE_HEADER: $request->addHeader($customization->getName() . ': ' . $customization->getValue()); break; } // remove single-use customizations after use if (!$customization->getPersistent()) { $this->removeCustomization($key); } } }
/** * Add params for a range facet to request * * @param Solarium_Client_Request $request * @param Solarium_Query_Select_Component_Facet_Range $facet * @return void */ public function addFacetRange($request, $facet) { $field = $facet->getField(); $request->addParam('facet.range', $this->renderLocalParams($field, array('key' => $facet->getKey(), 'ex' => $facet->getExcludes()))); $request->addParam("f.{$field}.facet.range.start", $facet->getStart()); $request->addParam("f.{$field}.facet.range.end", $facet->getEnd()); $request->addParam("f.{$field}.facet.range.gap", $facet->getGap()); $request->addParam("f.{$field}.facet.range.hardend", $facet->getHardend()); if (null !== $facet->getOther()) { $other = explode(',', $facet->getOther()); foreach ($other as $otherValue) { $request->addParam("f.{$field}.facet.range.other", trim($otherValue)); } } if (null !== $facet->getInclude()) { $include = explode(',', $facet->getInclude()); foreach ($include as $includeValue) { $request->addParam("f.{$field}.facet.range.include", trim($includeValue)); } } }
/** * Add per-field override options to the request * * @param Solarium_Query_Select_Component_Highlighting_Field $field * @param Solarium_Client_Request $request * @return void */ protected function _addFieldParams($field, $request) { $prefix = 'f.' . $field->getName() . '.hl.'; $request->addParam($prefix . 'snippets', $field->getSnippets()); $request->addParam($prefix . 'fragsize', $field->getFragSize()); $request->addParam($prefix . 'mergeContiguous', $field->getMergeContiguous()); $request->addParam($prefix . 'alternateField', $field->getAlternateField()); $request->addParam($prefix . 'formatter', $field->getFormatter()); $request->addParam($prefix . 'simple.pre', $field->getSimplePrefix()); $request->addParam($prefix . 'simple.post', $field->getSimplePostfix()); $request->addParam($prefix . 'fragmenter', $field->getFragmenter()); $request->addParam($prefix . 'useFastVectorHighlighter', $field->getUseFastVectorHighlighter()); }
/** * Add request settings for morelikethis * * @param Solarium_Query_Select_Component_MoreLikeThis $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { // enable morelikethis $request->addParam('mlt', 'true'); $request->addParam('mlt.fl', $component->getFields()); $request->addParam('mlt.mintf', $component->getMinimumTermFrequency()); $request->addParam('mlt.mindf', $component->getMinimumDocumentFrequency()); $request->addParam('mlt.minwl', $component->getMinimumWordLength()); $request->addParam('mlt.maxwl', $component->getMaximumWordLength()); $request->addParam('mlt.maxqt', $component->getMaximumQueryTerms()); $request->addParam('mlt.maxntp', $component->getMaximumNumberOfTokens()); $request->addParam('mlt.boost', $component->getBoost()); $request->addParam('mlt.qf', $component->getQueryFields()); $request->addParam('mlt.count', $component->getCount()); return $request; }
/** * Add request settings for Highlighting * * @param Solarium_Query_Select_Component_Highlighting $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function build($component, $request) { // enable highlighting $request->addParam('hl', 'true'); $request->addParam('hl.fl', $component->getFields()); $request->addParam('hl.snippets', $component->getSnippets()); $request->addParam('hl.fragsize', $component->getFragSize()); $request->addParam('hl.mergeContiguous', $component->getMergeContiguous()); $request->addParam('hl.requireFieldMatch', $component->getRequireFieldMatch()); $request->addParam('hl.maxAnalyzedChars', $component->getMaxAnalyzedChars()); $request->addParam('hl.alternateField', $component->getAlternateField()); $request->addParam('hl.maxAlternateFieldLength', $component->getMaxAlternateFieldLength()); $request->addParam('hl.formatter', $component->getFormatter()); $request->addParam('hl.simple.pre', $component->getSimplePrefix()); $request->addParam('hl.simple.post', $component->getSimplePostfix()); $request->addParam('hl.fragmenter', $component->getFragmenter()); $request->addParam('hl.fragListBuilder', $component->getFragListBuilder()); $request->addParam('hl.fragmentsBuilder', $component->getFragmentsBuilder()); $request->addParam('hl.useFastVectorHighlighter', $component->getUseFastVectorHighlighter()); $request->addParam('hl.usePhraseHighlighter', $component->getUsePhraseHighlighter()); $request->addParam('hl.highlightMultiTerm', $component->getHighlightMultiTerm()); $request->addParam('hl.regex.slop', $component->getRegexSlop()); $request->addParam('hl.regex.pattern', $component->getRegexPattern()); $request->addParam('hl.regex.maxAnalyzedChars', $component->getRegexMaxAnalyzedChars()); return $request; }
/** * Build request for a Terms query * * @param Solarium_Query_Terms $query * @return Solarium_Client_Request */ public function build($query) { $request = new Solarium_Client_Request(); $request->setHandler($query->getHandler()); $request->addParam('terms', true); $request->addParam('wt', 'json'); $request->addParam('terms.lower', $query->getLowerbound()); $request->addParam('terms.lower.incl', $query->getLowerboundInclude()); $request->addParam('terms.mincount', $query->getMinCount()); $request->addParam('terms.maxcount', $query->getMaxCount()); $request->addParam('terms.prefix', $query->getPrefix()); $request->addParam('terms.regex', $query->getRegex()); $request->addParam('terms.limit', $query->getLimit()); $request->addParam('terms.upper', $query->getUpperbound()); $request->addParam('terms.upper.incl', $query->getUpperboundInclude()); $request->addParam('terms.raw', $query->getRaw()); $request->addParam('terms.sort', $query->getSort()); $fields = explode(',', $query->getFields()); foreach ($fields as $field) { $request->addParam('terms.fl', trim($field)); } if ($query->getRegexFlags() !== null) { $flags = explode(',', $query->getRegexFlags()); foreach ($flags as $flag) { $request->addParam('terms.regex.flag', trim($flag)); } } return $request; }