public RefinerItem getRefiner() { if (GetSelectedRefiner() != null) { this.refiner = GetSelectedRefiner(); } return(this.refiner); }
/// <summary> /// Get the list of refiners from the query string /// in theory there should only be one refiner parameter /// to have more than one, we would need multi-select on the reuslts interface /// like check boxes /// input will be r=name:value /// where name is the name of an aggregator and needs to be translated to a field name /// value is the string to look for /// </summary> /// /// <returns>a refinerItem reflecting the refinement requested in the query or null if no refinement</returns> private RefinerItem GetSelectedRefiner() { RefinerItem selectedRefiner = new RefinerItem(); HttpContextBase currentHttpContext = SystemManager.CurrentHttpContext; var nameValues = HttpUtility.ParseQueryString(currentHttpContext.Request.QueryString.ToString()); string refiner = GetParamFromURLQueryString(refinerParameter); if (refiner != null && refiner.IndexOf(":") > 0) { selectedRefiner.RefinementName = refiner.Split(':')[0]; selectedRefiner.RefinementValue = refiner.Split(':')[1]; nameValues.Remove(refinerParameter); selectedRefiner.RefinementUrl = String.Format("{0}?{1}", currentHttpContext.Request.Url.AbsolutePath, nameValues); } else { selectedRefiner = null; } return(selectedRefiner); }