Exemple #1
0
        public List <Recommendation_Meta_Item> GetRecommendC6_ForSubCategory(string SubCate, int k)
        {
            string sql;
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("@k", k.ToString());
            parameters.Add("@SubCate", SubCate);

            // Recommendation_Meta_Item list = new Recommendation_Meta_Item();
            List <Recommendation_Meta_Item> list = new List <Recommendation_Meta_Item>();
            Recommendation_Meta_Item        item;


            //-----------------------------------------------
            sql = "SELECT TOP " + k + " [RS].SCORE_GLOBAL_C6.MetaItemID, SCORE FROM [RS].SCORE_GLOBAL_C6 WHERE [RS].SCORE_GLOBAL_C6.MetaItemID " +
                  "IN(SELECT DISTINCT MetaItemID FROM [RS].ALL_TRANSACTION WHERE UserID IN(SELECT UserID From RS.USER_TBL WHERE U_SubCategoryID = @SubCate)) ORDER BY SCORE DESC";

            SqlDataReader dr    = executeReader(sql, parameters);
            bool          Check = dr.HasRows;

            while (dr.Read())
            {
                item               = new Recommendation_Meta_Item();
                item.UserID        = SubCate;                      //Luu tam thoi
                item.RecommendType = ConstantValues.RC_TYPE_LRS01; // "Best Selling";
                item.MetaItemID    = dr[0].ToString();
                item.Quantity      = 0;
                item.Score         = Convert.ToDouble(dr[1]);
                list.Add(item);
            }
            dr.Close();

            if (!Check)
            {
                sql = "SELECT TOP " + k + " [RS].[CLUSTER_SCORE_C6].MetaItemID, Q " +
                      "FROM [RS].[CLUSTER_SCORE_C6] " +
                      "WHERE [RS].[CLUSTER_SCORE_C6].MetaItemID IN(SELECT DISTINCT MetaItemID FROM [RS].ALL_TRANSACTION WHERE UserID IN( " +
                      "SELECT UserID From RS.USER_TBL WHERE U_SubCategoryID = @SubCate)) ORDER BY Q DESC";

                SqlDataReader dr2 = executeReader(sql, parameters);
                while (dr2.Read())
                {
                    item               = new Recommendation_Meta_Item();
                    item.UserID        = SubCate;                      //Luu tam thoi
                    item.RecommendType = ConstantValues.RC_TYPE_LRS01; //"Best Selling";
                    item.MetaItemID    = dr2[0].ToString();
                    // item.MetaItemName = dr2[1].ToString();
                    item.Quantity = 0;
                    item.Score    = Convert.ToDouble(dr2[1]);
                    list.Add(item);
                }
                dr2.Close();
            }
            return(list);
        }
Exemple #2
0
        public Int32 GetQualtityTraditionalUser(Recommendation_Meta_Item RC)
        {
            int QTY = 0;
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("@UserID", RC.UserID);
            parameters.Add("@MetaItemID", RC.MetaItemID);

            string sql = "SELECT AVG([QAV]*[WEIGHT]) AS QTY " +
                         "FROM  [RS].[ALL_TRANSACTION],  [RS].[WEIGHT_MATRIX] " +
                         "WHERE MetaItemDestination =@MetaItemID AND [MetaItemSource]  = [MetaItemID] AND [WEIGHT_MATRIX].ClusterID = [ALL_TRANSACTION].ClusterID AND [UserID] = @UserID";

            SqlDataReader dr = executeReader(sql, parameters);


            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    double WEI = Convert.ToDouble(dr[0], CultureInfo.CreateSpecificCulture("en-GB"));
                    QTY = (int)WEI;
                }
            }
            dr.Close();
            //----------------------------------
            if (QTY == 0)
            {
                sql = "SELECT AVG([QAV]) AS QTY " +
                      "FROM  [RS].[ALL_TRANSACTION] " +
                      "WHERE [MetaItemID]  = @MetaItemID AND [UserID] = @UserID";

                SqlDataReader dr1 = executeReader(sql, parameters);

                while (dr1.Read())
                {
                    if (!dr1.IsDBNull(0))
                    {
                        double WEI = Convert.ToDouble(dr1[0], CultureInfo.CreateSpecificCulture("en-GB"));
                        QTY = (int)WEI;
                    }
                }
                dr1.Close();
            }
            //--------------------------------
            return(QTY);
        }
Exemple #3
0
        public List <Recommendation_Meta_Item> GetRecommendations(string sql)
        {
            List <Recommendation_Meta_Item> list = new List <Recommendation_Meta_Item>();
            SqlDataReader dr = executeReader(sql);

            while (dr.Read())
            {
                Recommendation_Meta_Item item = new Recommendation_Meta_Item();
                item.UserName     = dr.GetString(dr.GetOrdinal("UserName"));
                item.UserID       = dr.GetString(dr.GetOrdinal("UserID"));
                item.MetaItemID   = dr.GetString(dr.GetOrdinal("ItemID"));
                item.MetaItemName = dr.GetString(dr.GetOrdinal("MetaItemName"));
                item.Quantity     = dr.GetDouble(dr.GetOrdinal("Quantity"));

                list.Add(item);
            }
            dr.Close();
            return(list);
        }
Exemple #4
0
        public Recommendation_Meta_Item getCandidateForUserSubCategory_R4(string u_subcategory)
        {
            Recommendation_Meta_Item    item       = new Recommendation_Meta_Item();
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("@u_subcategory", u_subcategory);

            string sql = "SELECT TOP 1 U_SUBCATEGORYID, ITEMFAMILLYCODE, RAV as SCORE FROM [RS].SCORE_GLOBAL_C9 where U_SUBCATEGORYID = @u_subcategory " +
                         " AND ITEMFAMILLYCODE IN(SELECT DISTINCT ITEMFAMILLYCODE FROM [RS].NEW_META_ITEM) OrDER BY SCORE DESC";
            SqlDataReader dr = executeReader(sql, parameters);

            while (dr.Read())
            {
                item.UserID     = dr[0].ToString(); //luu U_SubcategoryID
                item.MetaItemID = dr[1].ToString(); //luu famillycode
                item.Score      = Convert.ToDouble(dr[2]);
            }
            dr.Close();
            return(item);
        }
Exemple #5
0
        public double GetQualtityNewUser(Recommendation_Meta_Item RC)
        {
            double QAV = 2;
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("@UserID", RC.UserID);
            parameters.Add("@MetaItemID", RC.MetaItemID);

            string        sql = "SELECT QAV FROM [RS].[QTY_PAR_SUBCATEGORY] WHERE [MetaItemID] = @MetaItemID AND [U_SUBCATEGORYID] = (SELECT U_SUBCATEGORYID FROM  [RS].USER_TBL WHERE USERID = @UserID)";
            SqlDataReader dr  = executeReader(sql, parameters);

            while (dr.Read())
            {
                QAV = Convert.ToDouble(dr[0]);
                if (QAV < 0)
                {
                    QAV = 1;
                }
            }
            dr.Close();
            return(QAV);
        }
Exemple #6
0
        //have formular here
        public List <Recommendation_Meta_Item> GetRecommendationR3(Predict_DAO_MCol a)
        {
            List <Recommendation_Meta_Item> list1 = new List <Recommendation_Meta_Item>();
            Recommendation_Meta_Item        recommendationMetaItem1 = new Recommendation_Meta_Item();
            List <CONF>   list2 = new List <CONF>();
            List <DIST>   list3 = new List <DIST>();
            List <string> list4 = new List <string>();
            List <string> list5 = new List <string>();
            List <string> list6 = new List <string>();
            List <U_I_Q>  list7 = new List <U_I_Q>();

            foreach (string cluster in a.GetListClusterID())
            {
                List <CONF>   confOfCluster        = a.GetCONF_OfCluster(cluster);
                List <DIST>   distOfCluster        = a.GetDIST_OfCluster(cluster);
                List <string> listUserOfCluster    = a.GetListUser_OfCluster(cluster);
                List <U_I_Q>  traditionalUsersMore = a.GetQuantityTraditionalUsers_More(cluster);
                foreach (string user in listUserOfCluster)
                {
                    List <string> notPurchasedOfUser = a.GetListMetaItemNotPurchased_OfUser(user, cluster);
                    List <string> listMetaItemOfUser = a.GetListMetaItem_OfUser(user);
                    string        str  = "";
                    double        num1 = 0.0;
                    for (int index1 = 0; index1 < notPurchasedOfUser.Count; ++index1)
                    {
                        double num2 = 0.0;
                        double num3 = 0.0;
                        double num4 = 1.0;
                        for (int index2 = 0; index2 < listMetaItemOfUser.Count; ++index2)
                        {
                            for (int index3 = 0; index3 < confOfCluster.Count; ++index3)
                            {
                                if (confOfCluster[index3].MetaItemSource.Equals(listMetaItemOfUser[index2]) && confOfCluster[index3].MetaItemDestination.Equals(notPurchasedOfUser[index1]))
                                {
                                    num3 = confOfCluster[index3].Confident;
                                    break;
                                }
                            }
                            for (int index3 = 0; index3 < distOfCluster.Count; ++index3)
                            {
                                if (distOfCluster[index3].MetaItemDestination.Equals(listMetaItemOfUser[index2]) && distOfCluster[index3].MetaItemDestination.Equals(notPurchasedOfUser[index1]))
                                {
                                    num4 = distOfCluster[index3].Distance;
                                    break;
                                }
                            }
                            if (num4 != 0.0)
                            {
                                num2 += num3 / num4;
                            }
                        }
                        if (num1 < num2 / (double)listMetaItemOfUser.Count)
                        {
                            num1 = num2;
                            str  = notPurchasedOfUser[index1];
                        }
                    }
                    if (num1 != 0.0)
                    {
                        Recommendation_Meta_Item recommendationMetaItem2 = new Recommendation_Meta_Item();
                        recommendationMetaItem2.UserID        = user;
                        recommendationMetaItem2.MetaItemID    = str;
                        recommendationMetaItem2.RecommendType = ConstantValues.RC_TYPE_LRS03;
                        recommendationMetaItem2.Quantity      = 0.0;
                        for (int index = 0; index < traditionalUsersMore.Count; ++index)
                        {
                            if (traditionalUsersMore[index].MetaItemID.Equals(str))
                            {
                                recommendationMetaItem2.Quantity = traditionalUsersMore[index].QTY;
                                break;
                            }
                        }
                        recommendationMetaItem2.Score = num1;
                        list1.Add(recommendationMetaItem2);
                    }
                }
            }
            return(list1);
        }