public override IEnumerable <SearchResult> Search(Query query)
        {
            var searchResults = new List <SearchResult>();

            // Clear previous search results
            _youTubeProvider.SearchResult.Clear();

            foreach (var item in _youTubeRepository.Search(query.SearchQuery))
            {
                if (item.id.kind == "youtube#video")
                {
                    var mappedIdentity      = _identityMappingService.Get(MappedIdentity.ConstructExternalIdentifier(_youTubeProvider.ProviderKey, string.Format("video/{0}/{1}", _youTubeProvider.SearchResultNode.ID, item.id.videoId)), true);
                    var youTubeSearchResult = _youTubeProvider.CreateSearchResult(mappedIdentity, item);
                    searchResults.Add(CreateSearchResult(youTubeSearchResult));
                    _youTubeProvider.SearchResult.Add(youTubeSearchResult);
                }
            }

            // Clear child items from the search node
            DataFactoryCache.RemoveListing(_youTubeProvider.SearchResultNode);

            return(searchResults);
        }