Пример #1
0
        /// <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);
        }