/** * @desc Searches for a song lyrics in Solr index * * @param LyricsApiSearchParams $searchParams * * @return array|null */ public function searchLyrics(LyricsApiSearchParams $searchParams) { $query = $this->newQueryFromSearch(['type: %1%' => LyricsUtils::TYPE_SONG, 'lyrics: %P2%' => $searchParams->getField(LyricsApiController::PARAM_QUERY)]); $query->setStart($searchParams->getOffset()); $query->setRows($searchParams->getLimit()); $hl = $query->getHighlighting(); $hl->setFields(self::INDEX_FIELD_NAME_LYRICS); $hl->setSimplePrefix(self::HIGHLIGHT_PREFIX); $hl->setSimplePostfix(self::HIGHLIGHT_POSTFIX); $solrSongs = $this->client->select($query); if ($solrSongs->getNumFound() <= 0) { return null; } $songs = []; $highlighting = $solrSongs->getHighlighting(); /** @var Solarium_Document_ReadOnly $solrSong */ foreach ($solrSongs as $solrSong) { $fields = $solrSong->getFields(); $songs[] = $this->getOutputSong($solrSong, $highlighting->getResult($fields['id']), true); } return $songs; }