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); }
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(); } } }
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); } }