* @license http://github.com/basdenooijer/solarium/raw/master/COPYING * @link http://www.solarium-project.org/ * * @package Solarium * @subpackage Client */ /** * Add select component Highlighting to the request * * @package Solarium * @subpackage Client */ class Solarium_Client_RequestBuilder_Select_Component_Highlighting { /** * Add request settings for Highlighting * * @param Solarium_Query_Select_Component_Highlighting $component * @param Solarium_Client_Request $request * @return Solarium_Client_Request */ public function buildComponent( Solarium_Query_Select_Component_Highlighting $component, Solarium_Client_Request $request) { // enable highlighting $request->addParam('hl', 'true'); // set global highlighting params $request->addParam('hl.fl', implode(',', array_keys($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()); $request->addParam('hl.q', $component->getQuery()); $request->addParam('hl.phraseLimit', $component->getPhraseLimit()); // set per-field highlighting params foreach ($component->getFields() as $field) { $this->_addFieldParams($field, $request); } return $request; } /** * 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()); } }