protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Get current index id int indexId = QueryHelper.GetInteger("indexId", 0); // Get current index info object SearchIndexInfo sii = SearchIndexInfoProvider.GetSearchIndexInfo(indexId); if (sii?.IndexProvider.Equals(SearchIndexInfo.AZURE_SEARCH_PROVIDER, StringComparison.OrdinalIgnoreCase) ?? false) { ShowInformation(GetString("smartsearch.searchpreview.azure.unavailable")); searchPnl.Visible = false; return; } // Show information about limited features of smart search preview ShowInformation(GetString("smartsearch.searchpreview.limitedfeatures")); // Show warning if indes isn't ready yet if ((sii != null) && (SearchIndexInfoProvider.GetIndexStatus(sii) == IndexStatusEnum.NEW)) { ShowWarning(GetString("srch.index.needrebuild")); } if (!RequestHelper.IsPostBack()) { // Get current search text from query string string searchText = QueryHelper.GetString("searchtext", ""); // Check whether search text is defined if (!string.IsNullOrEmpty(searchText)) { // Get current search mode from query string string searchMode = QueryHelper.GetString("searchmode", ""); SearchModeEnum searchModeEnum = searchMode.ToEnum <SearchModeEnum>(); // Check whether index info exists if (sii != null) { // Keep search text in search textbox //txtSearchFor.Text = searchText; var condition = new SearchCondition(null, searchModeEnum, SearchOptionsEnum.FullSearch); searchText = SearchSyntaxHelper.CombineSearchCondition(searchText, condition); // Get positions and ranges for search method int startPosition = 0; int numberOfProceeded = 100; int displayResults = 100; if (pgrSearch.CurrentPageSize != 0 && pgrSearch.GroupSize != 0) { startPosition = (pgrSearch.CurrentPage - 1) * pgrSearch.CurrentPageSize; numberOfProceeded = (((pgrSearch.CurrentPage / pgrSearch.GroupSize) + 1) * pgrSearch.CurrentPageSize * pgrSearch.GroupSize) + pgrSearch.CurrentPageSize; displayResults = pgrSearch.CurrentPageSize; } // Prepare parameters SearchParameters parameters = new SearchParameters() { SearchFor = searchText, SearchSort = null, Path = null, ClassNames = null, CurrentCulture = "##ALL##", DefaultCulture = null, CombineWithDefaultCulture = false, CheckPermissions = false, SearchInAttachments = false, User = MembershipContext.AuthenticatedUser, SearchIndexes = sii.IndexName, StartingPosition = startPosition, DisplayResults = displayResults, NumberOfProcessedResults = numberOfProceeded, NumberOfResults = 0, AttachmentWhere = null, AttachmentOrderBy = null, }; // Search var results = SearchHelper.Search(parameters); // Fill repeater with results repSearchResults.DataSource = results.Items; repSearchResults.PagerForceNumberOfResults = parameters.NumberOfResults; repSearchResults.DataBind(); // Show now results found ? if (parameters.NumberOfResults == 0) { lblNoResults.Text = "<br />" + GetString("srch.results.noresults.preview"); lblNoResults.Visible = true; Exception searchError = results.LastError; if (searchError != null) { pnlError.Visible = true; lblError.Text = GetString("smartsearch.searcherror") + " " + searchError.Message; } } } } // Fill CMSDropDownList option with values ControlsHelper.FillListControlWithEnum <SearchModeEnum>(drpSearchMode, "srch.dialog", useStringRepresentation: true); drpSearchMode.SelectedValue = QueryHelper.GetString("searchmode", EnumHelper.GetDefaultValue <SearchModeEnum>().ToStringRepresentation()); // Set up search text txtSearchFor.Text = QueryHelper.GetString("searchtext", ""); } }
/// <summary> /// Loads the index information. /// </summary> public void LoadData() { if (SearchIndex == null) { return; } var isAzureIndex = IsAzureIndex(); if (isAzureIndex) { SearchIndex.InvalidateIndexStatistics(); } var indexStatus = SearchIndexInfoProvider.GetIndexStatus(SearchIndex); var isInAction = indexStatus == IndexStatusEnum.REBUILDING || indexStatus == IndexStatusEnum.OPTIMIZING; var isNotReady = !isInAction && indexStatus != IndexStatusEnum.READY; // Items count lblItemCount.Text = SearchIndex.IndexDocumentCount.HasValue ? SearchIndex.IndexDocumentCount.ToString() : GetString("general.notavailable"); // File size lblFileSize.Text = SearchIndex.IndexSize.HasValue ? DataHelper.GetSizeString(SearchIndex.IndexSize.Value) : GetString("general.notavailable"); // Status var statusString = (indexStatus == IndexStatusEnum.READY) && SearchIndex.IndexIsOutdated ? "srch.status.readybutoutdated" : "srch.status." + indexStatus; string statusName = GetString(statusString); // Show preloader image and link to thread log in status when in action if (isInAction) { var statusText = ""; if (SearchTaskInfoProvider.IndexerThreadGuid != Guid.Empty) { string url = UrlResolver.ResolveUrl("~/CMSModules/System/Debug/System_ViewLog.aspx"); url = URLHelper.UpdateParameterInUrl(url, "threadGuid", SearchTaskInfoProvider.IndexerThreadGuid.ToString()); if (WebFarmHelper.WebFarmEnabled) { url = URLHelper.UpdateParameterInUrl(url, "serverName", WebFarmHelper.ServerName); } statusText = "<a href=\"javascript:void(0)\" onclick=\"modalDialog('" + url + "', 'ThreadProgress', '1000', '700');\" >" + statusName + "</a>"; } ltlStatus.Text = ScriptHelper.GetLoaderInlineHtml(statusText, "form-control-text"); ltlStatus.Visible = true; lblStatus.Visible = false; } else { // Show colored status name lblStatus.Text = statusName; string cssClass = String.Empty; if (isNotReady) { cssClass = "StatusDisabled"; } else if (indexStatus == IndexStatusEnum.READY) { cssClass = SearchIndex.IndexIsOutdated ? "color-orange-80" : "StatusEnabled"; } lblStatus.CssClass += " " + cssClass; } // Is optimized visible only if the search index is Azure based DateTime lastFileUpdate = DateTimeHelper.ZERO_TIME; if (isAzureIndex) { plcOptimized.Visible = false; } else { lblIsOptimized.Text = UniGridFunctions.ColoredSpanYesNo(SearchIndex.IsOptimized()); lastFileUpdate = SearchIndex.IndexFilesLastUpdate; } // Last update var lastUpdate = SearchIndex.IndexLastModified; if (lastFileUpdate > lastUpdate) { lastUpdate = lastFileUpdate; } lblLastUpdate.Text = lastUpdate.ToString(); // Last rebuild lblLastRebuild.Text = SearchIndex.IndexLastRebuildTime != DateTimeHelper.ZERO_TIME ? ValidationHelper.GetString(SearchIndex.IndexLastRebuildTime, "") : GetString("general.notavailable"); }