コード例 #1
0
        public async Task <IList <Movie> > SearchMovies(Interfaces.Model.SearchParameters searchParameters)
        {
            Microsoft.Azure.Search.Models.SearchParameters parameters;
            DocumentSearchResult <Movie> results;
            IList <Movie> resultSet = new List <Movie>();

            resultSet = await GetMovieFromCache(searchParameters.SearchTerm);

            if (resultSet == null || !resultSet.Any())
            {
                resultSet = new List <Movie>();

                ISearchIndexClient indexClientForQueries =
                    await _searchProvider.CreateSearchIndexAsync(_searchServiceName, _adminApiKey, _indexName);

                parameters =
                    new Microsoft.Azure.Search.Models.SearchParameters()
                {
                    Select  = searchParameters.Select,
                    Filter  = searchParameters.Filter,
                    OrderBy = searchParameters.OrderBy,
                    Top     = searchParameters.Top,
                };

                results = await indexClientForQueries.Documents.SearchAsync <Movie>(searchParameters.SearchTerm, parameters);

                results.Results.ToList().ForEach(i =>
                {
                    resultSet.Add(i.Document);
                });

                StoreSeachCache(searchParameters.SearchTerm, resultSet);
            }

            return(resultSet);
        }