예제 #1
0
        /// <summary>
        /// 输入商品关键词,并选择筛选条件后的方法,page=1
        /// </summary>
        /// <returns></returns>
        public ActionResult ChangeProductClassByKeyword_p()
        {

            try
            {
                if (-1 != HttpContext.检查登录())
                {
                    ViewData["已登录"] = "1";
                }
                else
                {
                    ViewData["已登录"] = "0";
                }
                TopDocs serchalllist = null;

                //输入的商品关键词
                string name = Request.QueryString["keyword"];
                //筛选的条件字符串
                var condition = Request.QueryString["condition"];

                var page = int.Parse(Request.QueryString["page"]);

                //回传参数设定默认值,防止为空
                ViewData["商品搜索显示列表"] = new List<商品查询>();
                ViewData["pagecount"] = 1;
                ViewData["currentpage"] = 1;
                ViewData["keyword"] = name;
                ViewData["筛选条件"] = condition;
                //回传参数设定默认值,防止为空

                if (!string.IsNullOrEmpty(name))
                {
                    serchalllist = SearchIndex("/Lucene.Net/IndexDic/Product", name);
                }
                var listcount = serchalllist.totalHits > 1000 ? 1000 : serchalllist.totalHits;
                if (serchalllist != null && listcount > 0)
                {
                    //满足关键词和筛选条件临时商品集合
                    IList<商品查询> serchlist_temp = new List<商品查询>();

                    //索引处理
                    IndexSearcher search = new IndexSearcher(new Lucene.Net.Store.SimpleFSDirectory(new System.IO.DirectoryInfo(IndexDic("/Lucene.Net/IndexDic/Product"))), true);
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("Name", name);

                    //先得出满足关键字的商品
                    for (int i = 0; i < listcount && i < 1000; i++)
                    {
                        商品查询 model = new 商品查询();
                        model.Id = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("NumId"));
                        model.商品信息.商品名 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Name");
                        model.商品数据.商品简介 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Description");
                        model.商品信息.商品图片.Add(search.Doc(serchalllist.scoreDocs[i].doc).Get("Pic"));
                        model.销售信息.价格 = decimal.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Price"));
                        model.商品信息.所属供应商.用户ID = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Company"));
                        model.基本数据.修改时间 = Convert.ToDateTime(search.Doc(serchalllist.scoreDocs[i].doc).Get("AddTime"));

                        model.商品数据.商品属性 = (null != search.Doc(serchalllist.scoreDocs[i].doc).Get("Attribute"))
                            ? JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, List<string>>>>(
                                search.Doc(serchalllist.scoreDocs[i].doc).Get("Attribute"))
                            : null;

                        //新增按地域查找
                        model.所属地域.省份 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Province");
                        model.所属地域.城市 = search.Doc(serchalllist.scoreDocs[i].doc).Get("City");
                        //新增按地域查找

                        //满足关键词的商品集合
                        serchlist_temp.Add(SetHighlighter(dic, model));
                    }

                    //进行条件筛选
                    if (!string.IsNullOrEmpty(condition)) //判断筛选条件
                    {
                        var pvs = condition.Split(new char[] { '$' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var item in pvs)
                        {
                            var pv = item.Split('|');

                            //满足筛选条件的商品集合
                            serchlist_temp = serchlist_temp.Where(o =>
                            {
                                var ppp = o.商品数据.商品属性;
                                return ppp.ContainsKey(pv[0]) &&
                                       ppp[pv[0]].ContainsKey(pv[1]) &&
                                       ppp[pv[0]][pv[1]].Contains(pv[2]);
                            }).ToList();
                        }
                    }

                    //新增地域价格查找参数
                    var province = Request.QueryString["province"];
                    var city = Request.QueryString["city"];
                    var price = Request.QueryString["price"];
                    //新增地域价格查找参数
                    //////////////////////////////////////////////////////////////////////新增按价格查询
                    if (!string.IsNullOrWhiteSpace(price))
                    {
                        if (price.Contains("及以上"))
                        {
                            price = price.Replace("及以上", "");
                            serchlist_temp = serchlist_temp.Where(o =>
                            {
                                var p_price = o.销售信息.价格;
                                return p_price >= decimal.Parse(price);
                            }).ToList();
                        }
                        else
                        {
                            var p = price.Split('-');
                            serchlist_temp = serchlist_temp.Where(o =>
                            {
                                var p_price = o.销售信息.价格;
                                return p_price >= decimal.Parse(p[0]) && p_price <= decimal.Parse(p[1]);
                            }).ToList();
                        }
                    }
                    //////////////////////////////////////////////////////////////////////新增按价格查询
                    //////////////////////////////////////////////////////////////////////新增按地域查询
                    if (!string.IsNullOrWhiteSpace(province))
                    {
                        serchlist_temp = serchlist_temp.Where(o =>
                        {
                            var pro = o.所属地域.省份;
                            return pro == province;
                        }).ToList();

                        if (!string.IsNullOrWhiteSpace(city))
                        {
                            serchlist_temp = serchlist_temp.Where(o =>
                            {
                                var p_city = o.所属地域.城市;
                                return p_city == city;
                            }).ToList();
                        }
                    }
                    //////////////////////////////////////////////////////////////////////新增按地域查询

                    //对筛选后的集合进行分页处理
                    if (serchlist_temp.Any())
                    {
                        int maxpage = Math.Max((serchlist_temp.Count + PAGESIZE - 1) / PAGESIZE, 1);

                        int length = PAGESIZE;
                        if (maxpage == page && serchlist_temp.Count % PAGESIZE != 0)
                        {
                            length = serchlist_temp.Count % PAGESIZE;
                        }

                        //进行分页处理后的数据
                        IList<商品查询> resultlist = new List<商品查询>();

                        //该页的起始索引
                        var count = (page - 1) * PAGESIZE;
                        for (var i = count; i < count + length; i++)
                        {
                            resultlist.Add(serchlist_temp[i]);
                        }

                        //回传参数更改值
                        ViewData["商品搜索显示列表"] = resultlist;
                        ViewData["pagecount"] = maxpage;
                        ViewData["currentpage"] = page;
                        ViewData["keyword"] = name;
                        ViewData["筛选条件"] = condition;
                    }
                }
                return PartialView("Part_Product/Part_ChangeProductClassByKeyword");
            }
            catch
            {
                return Content("<script>alert('暂无搜索结果,将前往商品库进行查找!');window.location='/商品陈列/';</script>");
            }
        }
예제 #2
0
        public ActionResult ChangeProductSearch_pagechange(int? page)
        {
            if (-1 != HttpContext.检查登录())
            {
                ViewData["已登录"] = "1";
            }
            else
            {
                ViewData["已登录"] = "0";
            }
            try
            {
                IList<商品查询> serchlist = new List<商品查询>();//该页显示的集合
                TopDocs serchalllist = null;
                string name = Request.Params["name"];
                if (!string.IsNullOrEmpty(name))
                {
                    serchalllist = SearchIndex("/Lucene.Net/IndexDic/Product", name);//满足该条件的总集合
                }
                var listcount = serchalllist.totalHits > 1000 ? 1000 : serchalllist.totalHits;
                if (serchalllist != null && listcount > 0)
                {
                    int maxpage = Math.Max((listcount + PAGESIZE - 1) / PAGESIZE, 1);

                    if (string.IsNullOrEmpty(page.ToString()) || page < 0 || page > maxpage)
                    {
                        page = 1;
                    }

                    int length = PAGESIZE;
                    if (maxpage == page && listcount % PAGESIZE != 0)
                    {
                        length = listcount % PAGESIZE;
                    }

                    int count = PAGESIZE * ((int)page - 1);

                    //IndexSearcher search = new IndexSearcher(IndexDic("/Lucene.Net/IndexDic/Product"), true);
                    IndexSearcher search = new IndexSearcher(new Lucene.Net.Store.SimpleFSDirectory(new System.IO.DirectoryInfo(IndexDic("/Lucene.Net/IndexDic/Product"))), true);
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("Name", name);

                    for (int i = count; i < count + length; i++)
                    {
                        商品查询 model = new 商品查询();

                        model.Id = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("NumId"));
                        model.商品信息.商品名 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Name");
                        model.商品数据.商品简介 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Description");
                        model.商品信息.商品图片.Add(search.Doc(serchalllist.scoreDocs[i].doc).Get("Pic"));
                        model.销售信息.价格 = decimal.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Price"));
                        model.商品信息.所属供应商.用户ID = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Company"));
                        model.基本数据.修改时间 = Convert.ToDateTime(search.Doc(serchalllist.scoreDocs[i].doc).Get("AddTime"));

                        //新增按地域查找
                        model.所属地域.省份 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Province");
                        model.所属地域.城市 = search.Doc(serchalllist.scoreDocs[i].doc).Get("City");
                        //新增按地域查找

                        serchlist.Add(SetHighlighter(dic, model));
                    }

                    ViewData["商品搜索显示列表"] = serchlist;
                    ViewData["pagecount"] = maxpage;
                    ViewData["currentpage"] = page;
                    ViewData["keyword"] = name;
                    ViewData["筛选条件"] = "";
                }

                return PartialView("Part_Product/Part_ProductKeyword");
            }
            catch
            {
                return Content("<script>alert('暂无搜索结果,将前往商品库进行查找!');window.location='/商品陈列/';</script>");
            }
        }
예제 #3
0
 /// <summary>
 /// 设置关键字高亮
 /// </summary>
 /// <param name="dicKeywords">关键字列表</param>
 /// <param name="model">返回的数据模型</param>
 /// <returns></returns>
 private 商品查询 SetHighlighter(Dictionary<string, string> dicKeywords, 商品查询 model)
 {
     SimpleHTMLFormatter simpleHTMLFormatter = new PanGu.HighLight.SimpleHTMLFormatter("<font color=\"red\">", "</font>");
     Highlighter highlighter = new PanGu.HighLight.Highlighter(simpleHTMLFormatter, new Segment());
     highlighter.FragmentSize = 50;
     string strTitle = string.Empty;
     dicKeywords.TryGetValue("Name", out strTitle);
     if (!string.IsNullOrEmpty(strTitle))
     {
         string title = highlighter.GetBestFragment(strTitle, model.商品信息.商品名);
         if (!string.IsNullOrEmpty(title))
             model.商品信息.商品名 = title;
     }
     return model;
 }
예제 #4
0
        public ActionResult Part_ProductSearch()
        {
            if (-1 != HttpContext.检查登录())
            {
                ViewData["已登录"] = "1";
            }
            else
            {
                ViewData["已登录"] = "0";
            }
            try
            {
                //IMongoQuery proQ = null;
                ViewData["筛选条件"] = "";
                ViewData["pagecount"] = 1;
                ViewData["currentpage"] = 1;
                ViewData["keyword"] = "";

                TopDocs serchalllist = null;
                string name = Request.QueryString["name"];
                if (!string.IsNullOrEmpty(name))
                {
                    serchalllist = SearchIndex("/Lucene.Net/IndexDic/Product", name);
                }
                IList<商品查询> serchlist = new List<商品查询>();

                var listcount = serchalllist.totalHits > 1000 ? 1000 : serchalllist.totalHits;
                if (serchalllist != null && listcount > 0)
                {
                    int page = 1;
                    int maxpage = Math.Max((listcount + PAGESIZE - 1) / PAGESIZE, 1);

                    int length = PAGESIZE;
                    if (maxpage == page && listcount % PAGESIZE != 0)
                    {
                        length = listcount % PAGESIZE;
                    }

                    //IndexSearcher search = new IndexSearcher(IndexDic("/Lucene.Net/IndexDic/Product"), true);
                    IndexSearcher search = new IndexSearcher(new Lucene.Net.Store.SimpleFSDirectory(new System.IO.DirectoryInfo(IndexDic("/Lucene.Net/IndexDic/Product"))), true);
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("Name", name);

                    for (int i = 0; i < length; i++)
                    {
                        商品查询 model = new 商品查询();

                        model.Id = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("NumId"));
                        model.商品信息.商品名 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Name");
                        model.商品数据.商品简介 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Description");
                        model.商品信息.商品图片.Add(search.Doc(serchalllist.scoreDocs[i].doc).Get("Pic"));
                        model.销售信息.价格 = decimal.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Price"));
                        model.商品信息.所属供应商.用户ID = long.Parse(search.Doc(serchalllist.scoreDocs[i].doc).Get("Company"));
                        model.基本数据.修改时间 = Convert.ToDateTime(search.Doc(serchalllist.scoreDocs[i].doc).Get("AddTime"));

                        //新增按地域查找
                        model.所属地域.省份 = search.Doc(serchalllist.scoreDocs[i].doc).Get("Province");
                        model.所属地域.城市 = search.Doc(serchalllist.scoreDocs[i].doc).Get("City");
                        //新增按地域查找

                        serchlist.Add(SetHighlighter(dic, model));
                    }

                    ViewData["pagecount"] = maxpage;
                    ViewData["currentpage"] = page;
                    ViewData["keyword"] = name;
                }
                ViewData["商品搜索显示列表"] = serchlist;
                if (serchlist.Count > 0)
                {
                    var productclass = 商品分类管理.查找分类(商品管理.查找商品(serchlist[0].Id).商品信息.所属商品分类.商品分类ID);
                    var att = productclass.商品属性模板;
                    ViewData["商品属性模板"] = att;
                    ViewData["价格分段"] = productclass.价格分段;
                }


                //IList<商品> serchlist = new List<商品>();

                //for (int i = 0; i < serchalllist.Count; i++)
                //{
                //    商品 model = new 商品();
                //    model.Id = long.Parse(serchalllist[i].Id.ToString());
                //    model.商品信息.商品名 = serchalllist[i].商品信息.商品名;
                //    model.商品信息.商品图片[0]=

                //    model.商品数据.商品简介 = serchalllist[i].商品数据.商品简介;
                //    model.销售信息.价格 = serchalllist[i].销售信息.价格;
                //    model.商品信息.所属供应商.用户ID = serchalllist[i].商品信息.所属供应商.用户ID;
                //    model.基本数据.修改时间 = Convert.ToDateTime(serchalllist[i].基本数据.添加时间);
                //    serchlist.Add(model);

                //}
                //ViewData["商品搜索显示列表"] = serchalllist;
                //ViewData["listcount"] = serchalllist.Count;
                //ViewData["pagesize"] = PAGESIZE;



                return PartialView("Part_Product/Part_ProductSearch");
            }
            catch
            {
                return Content("<script>alert('暂无搜索结果,将前往商品库进行查找!');window.location='/商品陈列/';</script>");
            }
        }