/// <summary> /// 商品关键字搜索自动完成功能 /// </summary> /// <param name="condition"></param> /// <returns></returns> public static ProductACSearchResult GetProductACSearchResultBySolr(string keywordPrefix) { SearchCondition condition = new SearchCondition() { KeyWord = keywordPrefix }; ProductACSearchResult result = SearchEngineManager.Query <ProductACSearchResult>(condition); return(result); }
public static ProductSearchResult GetProductSearchResultBySolr(ProductSearchCondition condition) { ProductSearchResult result = new ProductSearchResult(); //商品聚合显示 //condition.IsGroupQuery = true; #region 第一次搜索(初始化左导航,需要排除条件endecaId) //第一次搜索(初始化左导航,需要排除条件endecaId) ProductSearchCondition initialCondition = new ProductSearchCondition() { PagingInfo = condition.PagingInfo, KeyWord = condition.KeyWord, WithInKeyWord = condition.WithInKeyWord, Filters = condition.Filters, IsGroupQuery = condition.IsGroupQuery }; if (condition.NValueList != null && condition.NValueList.Count > 0) { initialCondition.Filters = initialCondition.Filters == null ? new List <FilterBase>(0) : initialCondition.Filters; foreach (string item in condition.NValueList) { if (!condition.Filters.Exists(x => { if (x is FieldFilter) { return(((FieldFilter)x).Value.Equals(item, StringComparison.CurrentCultureIgnoreCase)); } return(false); }) && !string.Equals(item, condition.EndecaId)) { initialCondition.Filters.Add(new FieldFilter("Nvalue", item)); } } } ProductSearchResult initialResult = SearchEngineManager.Query <ProductSearchResult>(initialCondition); result.Navigation = initialResult.Navigation; #endregion #region 第二次搜索(初始化过滤条件,需要排除N值) //第二次搜索(初始化过滤条件,需要排除N值) ProductSearchCondition filterCondition = new ProductSearchCondition() { PagingInfo = condition.PagingInfo, KeyWord = condition.KeyWord, WithInKeyWord = condition.WithInKeyWord, Filters = condition.Filters == null ? new List <FilterBase>(0) : /*是否有折扣不影响条件选择区*/ condition.Filters.Where(x => x.Field != "Nvalue" && x.Field != "p_cashrebate").ToList(), IsGroupQuery = condition.IsGroupQuery }; if (condition.NValueList != null && condition.NValueList.Count > 0) { filterCondition.Filters = filterCondition.Filters == null ? new List <FilterBase>(0) : filterCondition.Filters; foreach (string item in condition.NValueList) { List <string> NValue = GetNValueList(condition.NFilter); if (NValue != null && NValue.Count > 0) { if (!NValue.Contains(item)) { filterCondition.Filters.Add(new FieldFilter("Nvalue", item)); } } else { filterCondition.Filters.Add(new FieldFilter("Nvalue", item)); } } } ProductSearchResult filterResult = SearchEngineManager.Query <ProductSearchResult>(filterCondition); result.FilterNavigation = filterResult.Navigation; #endregion #region 第三次搜索(搜商品,加上所有搜索条件) //第三次搜索(搜商品,加上所有搜索条件) if (condition.NValueList != null && condition.NValueList.Count > 0) { condition.Filters = condition.Filters == null ? new List <FilterBase>(0) : condition.Filters; foreach (string item in condition.NValueList) { if (!condition.Filters.Exists(x => { if (x is FieldFilter) { return(((FieldFilter)x).Value.Equals(item, StringComparison.CurrentCultureIgnoreCase)); } return(false); })) { condition.Filters.Add(new FieldFilter("Nvalue", item)); } } } //商品二维码搜索条件 if (!string.IsNullOrWhiteSpace(condition.Barcode)) { if (!condition.Filters.Exists(x => x.Field.Equals("p_barcode", StringComparison.CurrentCultureIgnoreCase))) { condition.Filters.Add(new FieldFilter("p_barcode", condition.Barcode)); } } ProductSearchResult productResult = SearchEngineManager.Query <ProductSearchResult>(condition); result.ProductDataList = productResult.ProductDataList; #endregion return(result); }