       response.hits.hits.map (hit) -> hit._source
 
   ###*
+    @param {Object} body
+    @return {goog.Promise}
+  ###
+  searchSongarySong: (body) ->
+    @search index: 'songary', type: 'song', body: body
+
+  ###*
     @return {goog.Promise}
   ###
   getRecentlyUpdatedSongs: ->
-    @asSource @search index: 'songary', type: 'song', body:
+    @asSource @searchSongarySong
       sort: updatedAt: order: 'desc'
 
   ###*

    @return {goog.Promise}
  ###
  searchSongsByQuery: (query) ->
    # TODO: Ignore diacritics, boost name and artist, use detected language.
    @asSource @search index: 'songary', type: 'song', body:
      query: bool: should: [
        match: name: query: query, operator: 'and'
      ,

    @return {goog.Promise}
  ###
  getSongsByUrl: (urlArtist, urlName) ->
    @asSource @searchSongarySong
      query: filtered: filter: bool: must: [
        term: urlName: urlName
      ,
