/** * @return float[] */ public static function getDefaultBoostTemplates() { static $defaultBoostTemplates = null; if ($defaultBoostTemplates === null) { $source = wfMessage('cirrussearch-boost-templates')->inContentLanguage(); $defaultBoostTemplates = array(); if (!$source->isDisabled()) { $lines = Util::parseSettingsInMessage($source->plain()); $defaultBoostTemplates = self::parseBoostTemplates(implode(' ', $lines)); // Now parse the templates } } return $defaultBoostTemplates; }
/** * @return float[] */ public static function getDefaultBoostTemplates() { if (self::$defaultBoostTemplates === null) { $cache = \ObjectCache::newAccelerator(CACHE_NONE); self::$defaultBoostTemplates = $cache->getWithSetCallback($cache->makeKey('cirrussearch-boost-templates'), 600, function () { $source = wfMessage('cirrussearch-boost-templates')->inContentLanguage(); if (!$source->isDisabled()) { $lines = Util::parseSettingsInMessage($source->plain()); return Util::parseBoostTemplates(implode(' ', $lines)); // Now parse the templates } return array(); }); } return self::$defaultBoostTemplates; }
/** * Extract more like this settings from the i18n message cirrussearch-morelikethis-settings */ private static function overrideMoreLikeThisOptionsFromMessage() { global $wgCirrusSearchMoreLikeThisConfig, $wgCirrusSearchMoreLikeThisUseFields, $wgCirrusSearchMoreLikeThisAllowedFields, $wgCirrusSearchMoreLikeThisMaxQueryTermsLimit, $wgCirrusSearchMoreLikeThisFields; $cache = \ObjectCache::newAccelerator(CACHE_NONE); $lines = $cache->getWithSetCallback($cache->makeKey('cirrussearch-morelikethis-settings'), 600, function () { $source = wfMessage('cirrussearch-morelikethis-settings')->inContentLanguage(); if ($source && $source->isDisabled()) { return array(); } return Util::parseSettingsInMessage($source->plain()); }); foreach ($lines as $line) { list($k, $v) = explode(':', $line, 2); switch ($k) { case 'min_doc_freq': case 'max_doc_freq': case 'max_query_terms': case 'min_term_freq': case 'min_word_len': case 'max_word_len': if (is_numeric($v) && $v >= 0) { $wgCirrusSearchMoreLikeThisConfig[$k] = intval($v); } else { if ($v === 'null') { unset($wgCirrusSearchMoreLikeThisConfig[$k]); } } break; case 'percent_terms_to_match': if (is_numeric($v) && $v > 0 && $v <= 1) { $wgCirrusSearchMoreLikeThisConfig[$k] = $v; } else { if ($v === 'null') { unset($wgCirrusSearchMoreLikeThisConfig[$k]); } } break; case 'fields': $wgCirrusSearchMoreLikeThisFields = array_intersect(array_map('trim', explode(',', $v)), $wgCirrusSearchMoreLikeThisAllowedFields); break; case 'use_fields': if ($v === 'true') { $wgCirrusSearchMoreLikeThisUseFields = true; } else { if ($v === 'false') { $wgCirrusSearchMoreLikeThisUseFields = false; } } break; } if ($wgCirrusSearchMoreLikeThisConfig['max_query_terms'] > $wgCirrusSearchMoreLikeThisMaxQueryTermsLimit) { $wgCirrusSearchMoreLikeThisConfig['max_query_terms'] = $wgCirrusSearchMoreLikeThisMaxQueryTermsLimit; } } }
private function getIgnoredHeadings() { static $ignoredHeadings = null; if ($ignoredHeadings === null) { $source = wfMessage('cirrussearch-ignored-headings')->inContentLanguage(); $ignoredHeadings = array(); if (!$source->isDisabled()) { $lines = Util::parseSettingsInMessage($source->plain()); $ignoredHeadings = $lines; // Now we just have headings! } } return $ignoredHeadings; }