示例#1
0
        public SearchResult <T> Search(SearchParameters parameters)
        {
            int?start = null;
            int?rows  = null;

            if (parameters.PageIndex > 0)
            {
                start = (parameters.PageIndex - 1) * parameters.PageSize;
                rows  = parameters.PageSize;
            }

            var queryOptions = new QueryOptions
            {
                FilterQueries = FilterBuilder.BuildFilterQueries(parameters),
                Rows          = rows,
                Start         = start,
                OrderBy       = SortBuilder.GetSelectedSort(parameters),
            };

            try
            {
                var matchingResults = _solr.Query(QueryBuilder.BuildQuery(parameters), queryOptions);
                return(new SearchResult <T>
                {
                    MatchingResults = matchingResults,
                    TotalResults = matchingResults.NumFound
                });
            }
            catch (SolrConnectionException exception)
            {
                // log exception and return empty result
                Console.WriteLine($"Url: {exception.Url}    Message: {exception.Message}");
                return(new SearchResult <T>());
            }
        }