Esempio n. 1
0
        public List <CorrelacionUsuario> obtenSimilares(int usuario)
        {
            List <CorrelacionUsuario> resultado = new List <CorrelacionUsuario>();

            SqlConnection sqlConnection = new SqlConnection(connectionString);
            SqlCommand    cmd           = new SqlCommand();
            SqlDataReader result;

            cmd.CommandText = string.Format("SELECT * FROM SimulacionKarelotitlan.dbo.UsuarioRecomendacion where u1 = {0} order by correlacion desc ", usuario);
            cmd.CommandType = CommandType.Text;
            cmd.Connection  = sqlConnection;

            sqlConnection.Open();

            result = cmd.ExecuteReader();
            while (result.Read())
            {
                CorrelacionUsuario nuevo = new CorrelacionUsuario();
                nuevo.u1          = (int)result["u1"];
                nuevo.u2          = (int)result["u2"];
                nuevo.correlacion = (double)result["correlacion"];
                resultado.Add(nuevo);
            }


            return(resultado);
        }
Esempio n. 2
0
        public void guardaSimilitudes(int[] usuarios, double[,] similitud)
        {
            int    top             = 20;//guarda los mejores top
            double similitudMinima = 0.5;

            limpiaUsuarioRecomendacion();
            for (int i = 0; i < usuarios.Length; i++)
            {
                PriotiryQueue <CorrelacionUsuario> pq = new PriotiryQueue <CorrelacionUsuario>(invertida: true);
                for (int j = 0; j < usuarios.Length; j++)
                {
                    if (i != j && similitud[i, j] >= similitudMinima)
                    {
                        CorrelacionUsuario nuevo = new CorrelacionUsuario();
                        nuevo.u1          = usuarios[i];
                        nuevo.u2          = usuarios[j];
                        nuevo.correlacion = similitud[i, j];
                        pq.push(nuevo);
                        if (pq.count > top)
                        {
                            pq.pop();
                        }
                    }
                }
                StringBuilder command = new StringBuilder();
                command.Append("INSERT INTO SimulacionKarelotitlan.DBO.UsuarioRecomendacion (u1,u2,correlacion) VALUES  ");
                int cout = 0;
                while (!pq.empty)
                {
                    var elem = pq.pop();
                    if (cout != 0)
                    {
                        command.Append(",");
                    }
                    command.Append("(");
                    command.Append(elem.u1.ToString());
                    command.Append(",");
                    command.Append(elem.u2.ToString());
                    command.Append(",");
                    command.Append(elem.correlacion.ToString());
                    command.Append(")");
                    cout++;
                }
                command.Append(";");
                if (cout > 0)
                {
                    SqlConnection sqlConnection = new SqlConnection(connectionString);
                    SqlCommand    cmd           = new SqlCommand();
                    cmd.CommandText = command.ToString();
                    cmd.Connection  = sqlConnection;
                    sqlConnection.Open();
                    cmd.ExecuteNonQuery();
                    sqlConnection.Close();
                }
            }
        }
Esempio n. 3
0
        public int CompareTo(object obj)
        {
            CorrelacionUsuario b = (CorrelacionUsuario)obj;

            if (correlacion < b.correlacion)
            {
                return(-1);
            }
            else if (correlacion == b.correlacion)
            {
                return(0);
            }
            else
            {
                return(1);
            }
        }