/** * Set up spelling parameters. * * @param EventInterface $event Event * * @return EventInterface */ public function onSearchPre(EventInterface $event) { if ($event->getParam('context') != 'search') { return $event; } $backend = $event->getTarget(); if ($backend === $this->backend) { $params = $event->getParam('params'); if ($params) { // Set spelling parameters when enabled: $sc = $params->get('spellcheck'); if (isset($sc[0]) && $sc[0] != 'false') { $this->active = true; if (empty($this->dictionaries)) { throw new \Exception('Spellcheck requested but no dictionary configured'); } // Set relevant Solr parameters: reset($this->dictionaries); $params->set('spellcheck', 'true'); $params->set('spellcheck.dictionary', current($this->dictionaries)); // Turn on spellcheck.q generation in query builder: $this->backend->getQueryBuilder()->setCreateSpellingQuery(true); } } } return $event; }
/** * Set up highlighting parameters. * * @param EventInterface $event Event * * @return EventInterface */ public function onSearchPre(EventInterface $event) { $backend = $event->getTarget(); if ($backend === $this->backend) { $params = $event->getParam('params'); if ($params) { // Set highlighting parameters unless explicitly disabled: $hl = $params->get('hl'); if (!isset($hl[0]) || $hl[0] != 'false') { $this->active = true; $params->set('hl', 'true'); $params->set('hl.fl', $this->fieldList); $params->set('hl.simple.pre', '{{{{START_HILITE}}}}'); $params->set('hl.simple.post', '{{{{END_HILITE}}}}'); // Turn on hl.q generation in query builder: $this->backend->getQueryBuilder()->setCreateHighlightingQuery(true); } } } return $event; }