コード例 #1
0
 /**
  * @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;
 }