/// <summary> /// 获取Endeca Search Condition /// </summary> /// <returns></returns> public static ProductSearchCondition GetSearchCondition(SolrProductQueryVM vm) { ProductSearchCondition condition = new ProductSearchCondition(); #region keyword withInkeyword keyWord = HttpContext.Current.Request.QueryString["keyword"]; //解决“- +”号报错的bug if (!string.IsNullOrEmpty(keyWord) && keyWord.StartsWith("-")) { keyWord = keyWord.Replace("-", "-"); } if (!string.IsNullOrEmpty(keyWord) && keyWord.StartsWith("+")) { keyWord = keyWord.Replace("+", "+"); } withInKeyword = HttpContext.Current.Request.QueryString["withInKeyword"]; keyWord = string.IsNullOrEmpty(keyWord) ? withInKeyword : (keyWord + " " + withInKeyword); condition.KeyWord = string.IsNullOrEmpty(keyWord) ? string.Empty : keyWord.Trim(); condition.WithInKeyWord = withInKeyword; #endregion #region 分类以及过滤条件 //N值 strN = GetNavigationKey(); condition.NFilter = strN; //将N值写入NvalueList condition.NValueList = GetNValueList(strN); int.TryParse(vm.SubCategoryID, out subCategoryid); int.TryParse(HttpContext.Current.Request.QueryString["enid"], out endecaId); endecaId = endecaId <= 0 ? GetSubcategoryDimensionValues(subCategoryid) : endecaId; if (endecaId > 0) { condition.NValueList.Add(endecaId.ToString()); condition.EndecaId = endecaId.ToString(); } #endregion condition.Filters = GetFilters(); condition.FilterExpression = GetFilterExpression(); #region 分页排序 //分页信息 int.TryParse(HttpContext.Current.Request.QueryString["page"], out pageNumber); int.TryParse(HttpContext.Current.Request.QueryString["pageSize"], out pageSize); condition.PagingInfo = new ECommerce.Utility.DataAccess.SearchEngine.PagingInfo(); condition.PagingInfo.PageNumber = pageNumber == 0 ? 1 : pageNumber; condition.PagingInfo.PageSize = pageSize == 0 ? 24 : pageSize; //排序 int.TryParse(HttpContext.Current.Request.QueryString["sort"], out sortMode); sortMode = sortMode <= 0 ? 10 : sortMode; if (!string.IsNullOrWhiteSpace(keyWord) && sortMode <= 10) { sortMode = 9999; } List <SortItem> sortItems = new List <SortItem>(); sortItems.Add(SortKeyValueMappingConfig.SortItemList.Find(f => f.Key == sortMode).Item); condition.SortItems = sortItems; #endregion return(condition); }