コード例 #1
0
        // GET: Search
        public ActionResult Index(string searchText, int page = DEFAULT_PAGE_NUMBER)
        {
            if (String.IsNullOrWhiteSpace(searchText))
            {
                var empty = new SearchResultsModel
                {
                    Items = new List <SearchResultItemModel>()
                };
                return(View(empty));
            }

            // Validate page number (starting from 1)
            page = Math.Max(page, DEFAULT_PAGE_NUMBER);

            var searchParameters = SearchParameters.PrepareForPages(searchText, new[] { INDEX_NAME }, page, PAGE_SIZE, MembershipContext.AuthenticatedUser);
            var searchResults    = SearchHelper.Search(searchParameters);

            pagesActivityLogger.LogInternalSearch(searchText);

            var siteId      = siteService.CurrentSite.SiteID;
            var culture     = HttpContext.Features.Get <IRequestCultureFeature>().RequestCulture.Culture.Name;
            var hostAddress = HttpContext.Features.Get <IHttpConnectionFeature>().RemoteIpAddress.ToString();
            var uri         = new Uri(HttpContext.Request.GetEncodedUrl());

            analyticsLogger.LogInternalSearchKeywords(new AnalyticsData(siteId, searchText, culture: culture, uri: uri, hostAddress: hostAddress));

            var searchResultItemModels = searchResults.Items
                                         .Select(searchItemViewModelFactory.GetTypedSearchResultItemModel);

            var model = new SearchResultsModel
            {
                Items         = searchResultItemModels.ToList(),
                Query         = searchText,
                CurrentPage   = page,
                NumberOfPages = (int)Math.Ceiling(searchResults.TotalNumberOfResults / (double)PAGE_SIZE)
            };

            return(View(model));
        }
コード例 #2
0
        public ActionResult Index(string searchText, int page = DEFAULT_PAGE_NUMBER)
        {
            if (String.IsNullOrWhiteSpace(searchText))
            {
                var empty = new SearchResultsModel
                {
                    Items = new StaticPagedList <SearchResultItemModel>(Enumerable.Empty <SearchResultItemModel>(), page, PAGE_SIZE, 0)
                };
                return(View(empty));
            }

            // Validate page number (starting from 1)
            page = Math.Max(page, DEFAULT_PAGE_NUMBER);

            var searchParameters = SearchParameters.PrepareForPages(searchText, new[] { INDEX_NAME }, page, PAGE_SIZE, MembershipContext.AuthenticatedUser);
            var searchResults    = SearchHelper.Search(searchParameters);

            pagesActivityLogger.LogInternalSearch(searchText);

            var siteId      = siteService.CurrentSite.SiteID;
            var culture     = Thread.CurrentThread.CurrentCulture.Name;
            var uri         = retriever.GetContext().Request.Url;
            var hostAddress = retriever.GetContext().Request.UserHostAddress;

            analyticsLogger.LogInternalSearchKeywords(new AnalyticsData(siteId, searchText, culture: culture, uri: uri, hostAddress: hostAddress));

            var searchResultItemModels = searchResults.Items
                                         .Select(searchResultItem => searchItemViewModelFactory.GetTypedSearchResultItemModel(searchResultItem));

            var model = new SearchResultsModel
            {
                Items = new StaticPagedList <SearchResultItemModel>(searchResultItemModels, page, PAGE_SIZE, searchResults.TotalNumberOfResults),
                Query = searchText
            };

            return(View(model));
        }