public ActionResult Result(SearchCriteria criteria) { if (criteria == null) criteria = new SearchCriteria(); var searchResult = searchService.Search(criteria); return View(searchResult); }
public ActionResult Paging(SearchCriteria criteria) { if (criteria == null) criteria = new SearchCriteria(); var searchResult = searchService.Search(criteria); var numberOfPages = Convert.ToInt32(Math.Ceiling(searchResult.TotalSearchResults / (double)criteria.PageSize)); return View(new SearchPagingModel() { Criteria = criteria, NumberOfPages = numberOfPages }); }
public ActionResult Facet(SearchCriteria criteria) { if (criteria == null) criteria = new SearchCriteria(); var searchResult = searchService.Search(criteria); return View(new SearchFacetModel() { Criteria = criteria, Result = searchResult }); }
public ISearchResult Search(SearchCriteria criteria) { var key = "LazySearchService"; if (criteria != null) key += criteria.GetHashCode().ToString(); if (!cache.ContainsKey(key)) { cache.AddEntity(key, innerService.Search(criteria)); } return cache.GetEntity(key); }
public ISearchResult Search(SearchCriteria criteria) { if (criteria == null || string.IsNullOrWhiteSpace(criteria.Text)) return new SearchResult(); var timer = new Sitecore.Diagnostics.HighResTimer(true); var index = ContentSearchManager.GetIndex("sitecore_master_index") as SpatialLuceneIndex; using (var context = index.CreateSearchContext() as SpatialLuceneSearchContext) { if (criteria.PointRadius != null) { context.SetGeoFilter(new PointRadiusCriterion() { FieldName = "_geohash", RadiusKm = criteria.PointRadius.RadiusKm, Latitude = criteria.PointRadius.Latitude, Longitude = criteria.PointRadius.Longitude, Sort = PointRadiusCriterion.SortOption.Ascending }); } var queriable = context.GetQueryable<SearchResultItem>(); Expression<Func<SearchResultItem, bool>> predicate = PredicateBuilder.True<SearchResultItem>(); foreach(var entry in criteria.Text.Split(' ')) { predicate = predicate.And(i => i.Content == entry); } var result = queriable .Where(predicate) .Page(criteria.CurrentPage-1, criteria.PageSize) .FacetPivotOn(p => p.FacetOn(d => d["categories"]).FacetOn(d => d["haspoint"])) .GetResults(); var searchResult = new SearchResult() { ResultDocuments = result.Hits.Select(hit => hit.Document).ToList(), Facets = CollectFacets(result.Facets.Categories), TotalSearchResults = result.TotalSearchResults, }; searchResult.TotalMilliseconds = timer.ElapsedTimeSpan.Milliseconds; return searchResult; } }