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)); }