/// <summary>
        /// 如果是删除 目录 ,查找该目录的所有子目录,查找所有的文件
        /// 若是删除文档,则直接删除
        /// </summary>
        /// <returns></returns>
        public List <DBItem> FindTarget(string dbName, string collectionName, string id)
        {
            List <DBItem> list = new List <DBItem>();
            var           db   = DataStorage.GetInstance(DBType.MongoDB);

            if (collectionName == CONST.DB.CollectionName_CategoryItem)
            {
                var categoryList = CategoryManager.GetInstance().GetSubCategory(id);
                categoryList.Add(CategoryItem.Load(id));
                foreach (var category in categoryList)
                {
                    var dbItem1 = DBItem.Create(CONST.DB.DBName_DocService, CONST.DB.CollectionName_CategoryItem, category.id);
                    list.Add(dbItem1);
                    var docList = DocManager.GetInstance().Find("{'CategoryID':'" + dbItem1.ID + "'}", "{}", "{}", 0, int.MaxValue);
                    foreach (var doc in docList)
                    {
                        var dbItem2 = DBItem.Create(CONST.DB.DBName_DocService, CONST.DB.CollectionName_DocItem, doc.ID);
                        list.Add(dbItem2);
                    }
                }
            }
            else
            {
                list.Add(DBItem.Create(dbName, collectionName, id));
            }
            return(list);
        }
Example #2
0
        /// <summary>
        /// 根据新增,修改情况 热词分析 分词 发文/修改统计
        /// </summary>
        public void DataAnalyse()
        {
            var startTime = DateTime.Now;///开始运行时间

            Console.Title = "文档维护进程进程 启动时间:" + startTime;
            while (true)
            {
                ///遍历写入数据
                var dbName         = CONST.DB.DBName_DocService;
                var collectionName = CONST.DB.CollectionName_ModifyLogItem;
                var db             = DataStorage.GetInstance(DBType.MongoDB);
                db.EventTraverse += (object sender, EventArgs e) =>
                {
                    EventProcEventArgs ee = e as EventProcEventArgs;
                    var dict                 = ee.Default as Dictionary <string, object>;
                    var targetDbName         = dict["DatabaseName"].ToString();
                    var targetCollectionName = dict["CollectionName"].ToString();
                    var targetID             = (ObjectId)dict["TargetID"];
                    var id = dict["_id"].ToString();

                    if (targetCollectionName == CONST.DB.CollectionName_DocItem)
                    {
                        ///重新分词,聚类
                        var doc       = new DocItem();
                        var plainText = doc.PlainText;
                        var res       = FenCi.GetResult(plainText);
                        var queryDel  = "{'TargetID':ObjectId('" + targetID.ToString() + "')}";
                        db.Remove(dbName, collectionName, queryDel);
                        foreach (var item in res)
                        {
                            var svItem = new
                            {
                                DbName           = targetDbName,
                                CollectionName   = targetCollectionName,
                                TargetID         = targetID,
                                Word             = item.Key,
                                Count            = item.Value,
                                CreateTime       = DateTime.Now,
                                TargetCreateTime = dict["CreateTime"]
                            };

                            db.Save3(CONST.DB.DBName_DocService, CONST.DB.CollectionName_FenCi, svItem);
                        }
                    }
                    else if (targetCollectionName == CONST.DB.CollectionName_CategoryItem)
                    {
                        ///重新统计,当前目录的子目录数量 , 每一级文档数量
                        var subCategoryList = CategoryManager.GetInstance().GetSubCategory(targetID.ToString());
                        var category        = CategoryItem.Load(targetID.ToString());
                        category.SubCategoryCount = subCategoryList.Count;
                        category.Save();
                    }

                    //ModifyLogItem.Remove(id);
                };
                db.Traverse(dbName, collectionName, "{}");
                ThreadManager.Pause(minutes: 2);
            }
        }
Example #3
0
        public CategoryItem Get(string id)
        {
            var inst = CategoryItem.Load(id);

            if (!string.IsNullOrWhiteSpace(inst.ParentID) && 24 == inst.ParentID.Length)
            {
                inst.ParentName = CategoryItem.Load(inst.ParentID).Name;
            }
            return(inst);
        }