Beispiel #1
0
        public ActionResult Index(string btncreate)
        {
            MultiSite_GangGuanEntities Bll = new Models.MultiSite_GangGuanEntities();

            int pageSize = 200;                                                                      //页大小
            int totalNum = Bll.Products_SellOffer.Count();                                           //总条数
            int pageNum  = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1; //页数
            int i        = 0;

            try
            {
                for (i = 0; i < pageNum; i++)
                {
                    List <Products_SellOffer> list = new List <Models.Products_SellOffer>();
                    list = Bll.Products_SellOffer.OrderBy(o => o.Id > 0).Skip(i * pageSize).Take(pageSize).ToList();
                    //list = Bll.Products_SellOffer.OrderBy(o => o.Id > 0).Take(pageSize).ToList();
                    Thread.Sleep(1500);
                    CreateIndex(list);
                    //totalNum = totalNum - list.Count;
                }
            }
            catch (Exception)
            {
                Response.Write("第+" + i + "+页出问题出错");
            }
            //if (totalNum == 0)
            //{
            //    Response.Write("创建完成");
            //}
            Response.Write("创建完成");
            return(View());
        }
Beispiel #2
0
        public void CreateTestIndex(string name)
        {
            MultiSite_GangGuanEntities Bll = new Models.MultiSite_GangGuanEntities();
            string      indexpath          = HttpContext.Server.MapPath("/Indexdata");
            FSDirectory directory          = FSDirectory.Open(new DirectoryInfo(indexpath), new NoLockFactory());
            bool        isExist            = IndexReader.IndexExists(directory);  //是否存在索引库文件夹以及索引库特征文件

            if (isExist)
            {
                //如果索引目录被锁定(比如索引过程中程序异常退出或另一进程在操作索引库),则解锁
                //Q:存在问题 如果一个用户正在对索引库写操作 此时是上锁的 而另一个用户过来操作时 将锁解开了 于是产生冲突 --解决方法后续
                if (IndexWriter.IsLocked(directory))
                {
                    IndexWriter.Unlock(directory);
                }
            }

            IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isExist, IndexWriter.MaxFieldLength.UNLIMITED);

            Document document = new Document();

            Field title = new Field("title", name, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);

            document.Add(title);
            writer.AddDocument(document);     //文档写入索引库

            writer.Optimize();

            writer.Close();      //会自动解锁
            directory.Close();   //不要忘了Close,否则索引结果搜不到
        }
Beispiel #3
0
        public void CreateIndex(List <Products_SellOffer> prolist)
        {
            MultiSite_GangGuanEntities Bll = new Models.MultiSite_GangGuanEntities();
            string      indexpath          = HttpContext.Server.MapPath("/Indexdata");
            FSDirectory directory          = FSDirectory.Open(new DirectoryInfo(indexpath), new NoLockFactory());
            bool        isExist            = IndexReader.IndexExists(directory);  //是否存在索引库文件夹以及索引库特征文件

            if (isExist)
            {
                //如果索引目录被锁定(比如索引过程中程序异常退出或另一进程在操作索引库),则解锁
                //Q:存在问题 如果一个用户正在对索引库写操作 此时是上锁的 而另一个用户过来操作时 将锁解开了 于是产生冲突 --解决方法后续
                if (IndexWriter.IsLocked(directory))
                {
                    IndexWriter.Unlock(directory);
                }
            }

            IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isExist, IndexWriter.MaxFieldLength.UNLIMITED);

            foreach (var pitem in prolist)
            {
                Document document = new Document();
                Field    id       = new Field("id", pitem.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED);

                Field title = new Field("title", pitem.Title, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                title.SetBoost(1.0f);

                Field keywords = new Field("keywords", pitem.Keywords, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                keywords.SetBoost(0.7f);

                Field detail = new Field("detail", Bll.Products_SellOffer_Detail.Where(d => d.SellOfferId == pitem.Id).FirstOrDefault().Detail, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);

                Field sysattr = new Field("sysattr", pitem.SysAttr, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                sysattr.SetBoost(0.4f);

                Field cusattr = new Field("cusattr", pitem.CusAttr, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                cusattr.SetBoost(0.1f);

                document.Add(id);
                document.Add(title);
                document.Add(keywords);
                document.Add(detail);
                document.Add(sysattr);
                document.Add(cusattr);
                writer.AddDocument(document);  //文档写入索引库
            }
            writer.Optimize();
            writer.Close();      //会自动解锁
            directory.Close();   //不要忘了Close,否则索引结果搜不到
        }