/** * Delivers a JSON response for videos matching a provided title * Expects query param "title" for the title value. * * @requestParam string title Text used for searching against video titles * @requestParam int limit Limit the number of results returned */ public function searchVideosByTitle() { $searchConfig = new Wikia\Search\Config(); $title = $this->getVal('title'); $limit = $this->getVal('limit'); $mm = $this->getVal('mm', '80%'); if (empty($title)) { throw new Exception("Please include a value for 'title'."); } $searchConfig->setVideoTitleSearch(true)->setQuery($title)->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__, 'title' => $title, 'limit' => $limit, 'mm' => $mm, 'minDuration' => $minDuration, 'maxDuration' => $maxDuration]); $this->getResponse()->setFormat('json'); $this->getResponse()->setData($queryService->searchAsApi()); }