/** * Lazy-loads config with values set from controller. Allows us to test config API. * @return Wikia\Search\Config */ public function getConfig() { if ($this->config === null) { $this->config = new Wikia\Search\Config(); $this->config->setLimit($this->getLimit())->setStart($this->getStart())->setNamespaces([NS_FILE])->setRank($this->getRank()); $this->config->setFilterQueryByCode(Wikia\Search\Config::FILTER_VIDEO); if ($this->getSearchType() == 'premium') { $this->config->setWikiId(Wikia\Search\QueryService\Select\Dismax\Video::VIDEO_WIKI_ID); } } return $this->config; }
/** * Lazy-loads Wikia\Search\Config * @return Wikia\Search\Config */ protected function getConfig() { if ($this->config === null) { $config = new Wikia\Search\Config(); $config->setLimit(1); if ($this->getCrossWiki()) { $config->setCrossWikiLuceneQuery(true); } else { $config->setDirectLuceneQuery(true); } $this->config = $config; } return $this->config; }
/** * Search videos by topics * @requestParam string defaultTopic - Text to use for the topic if no topics are found on this wiki. * @requestParam int limit - Limit the number of results returned */ public function searchVideosByTopics() { $limit = $this->getVal('limit'); $defaultTopic = $this->getVal('defaultTopic'); $topics = $this->getTopicsAsQuery($defaultTopic); if (!empty($topics)) { $searchConfig = new Wikia\Search\Config(); $mm = $this->getVal('mm', '80%'); $searchConfig->setVideoContentSearch(true)->setQuery($topics)->setMinimumMatch($mm); if (!empty($limit)) { $searchConfig->setLimit($limit); } $queryService = $this->queryServiceFactory->getFromConfig($searchConfig); $minDuration = $this->getVal('minseconds'); $maxDuration = $this->getVal('maxseconds'); if ($minDuration && $maxDuration) { $queryService->setMinDuration($minDuration)->setMaxDuration($maxDuration); } $log = WikiaLogger::instance(); $log->info(__METHOD__ . ' - Querying SOLR', ['method' => __METHOD__, 'topics' => $topics, 'limit' => $limit, 'mm' => $mm, 'minDuration' => $minDuration, 'maxDuration' => $maxDuration]); $this->getResponse()->setFormat('json'); $this->getResponse()->setData($queryService->searchAsApi()); } }