public SearchResult CreateSearchResults(SolrQueryResults <MetadataIndexDoc> queryResults, SearchParameters parameters)
        {
            List <SearchResultItem> items = ParseResultDocuments(queryResults);

            List <Facet> facets       = ParseFacetResults(queryResults);
            SearchResult searchResult = new SearchResult
            {
                Items  = items,
                Facets = facets,
                Limit  = parameters.Limit,
                Offset = parameters.Offset,
                Type   = GetType(queryResults)
            };

            if (queryResults != null)
            {
                searchResult.NumFound = queryResults.NumFound;
            }
            return(searchResult);
        }
        public SearchResultForOrganization SearchByOrganization(SearchByOrganizationParameters parameters)
        {
            parameters.CreateFacetOfOrganizationSeoName();
            parameters.AddComplexFacetsIfMissing();

            ISolrQuery query = parameters.BuildQuery;

            SolrQueryResults <MetadataIndexDoc> queryResults = _solrInstance.Query(query, new QueryOptions
            {
                FilterQueries = parameters.BuildFilterQueries(),
                OrderBy       = parameters.OrderBy(),
                Rows          = parameters.Limit,
                Start         = parameters.Offset - 1, //solr is zero-based - we use one-based indexing in api
                Facet         = parameters.BuildFacetParameters()
            });

            SearchResult        searchResult        = CreateSearchResults(queryResults, parameters);
            Task <Organization> getOrganizationTask = _organizationService.GetOrganizationByName(parameters.OrganizationSeoName);
            Organization        organization        = getOrganizationTask.Result;

            return(new SearchResultForOrganization(organization, searchResult));
        }