private function configureHighlightingForSource(&$config, $highlightSource) { global $wgCirrusSearchRegexMaxDeterminizedStates; $patterns = array(); $locale = null; $caseInsensitive = false; foreach ($highlightSource as $part) { if (isset($part['pattern'])) { $patterns[] = $part['pattern']; $locale = $part['locale']; $caseInsensitive |= $part['insensitive']; } } if (count($patterns)) { $options = array('regex' => $patterns, 'locale' => $locale, 'regex_flavor' => 'lucene', 'skip_query' => true, 'regex_case_insensitive' => (bool) $caseInsensitive, 'max_determinized_states' => $wgCirrusSearchRegexMaxDeterminizedStates); $config['fields']['source_text.plain']['options'] = array_merge($config['fields']['source_text.plain']['options'], $options); return; } $queryStrings = array(); foreach ($highlightSource as $part) { if (isset($part['query'])) { $queryStrings[] = $part['query']; } } if (count($queryStrings)) { $bool = new \Elastica\Query\Bool(); foreach ($queryStrings as $queryString) { $bool->addShould($queryString); } $config['fields']['source_text.plain']['highlight_query'] = $bool->toArray(); } }