public static List <int> RetornarCodigosPublicacoes(List <string> termos) { var codigosPublicacoes = new List <int>(); List <int> codigosTermos = Termo.RetonarCodigos(termos); var comandoSQL = new StringBuilder(); comandoSQL.Append("SELECT CodigoPublicacao FROM publicacoes_termos "); comandoSQL.AppendFormat("WHERE CodigoTermo IN ({0}) ", Util.ListaIntParaString(codigosTermos)); comandoSQL.AppendFormat("GROUP BY CodigoPublicacao HAVING COUNT(CodigoTermo) > {0}", termos.Count); DataTable dtResultado = AcessoBanco.Instance.ExecuteReader(comandoSQL.ToString()); foreach (DataRow dr in dtResultado.Rows) { codigosPublicacoes.Add(int.Parse(dr["CodigoPublicacao"].ToString())); } return(codigosPublicacoes); }
private static void ExtrairTermos(List <Publicacao> publicacoes, List <string> stopWords) { var termos = new List <Termo>(); Termo termo; int i = 1; Console.WriteLine($"[{DateTime.Now}] Extraindo termos - Publicação {i} de {publicacoes.Count}."); foreach (Publicacao pub in publicacoes) { if (i % 1000 == 0) { Console.WriteLine($"[{DateTime.Now}] Extraindo termos - Publicação {i} de {publicacoes.Count}."); } var palavras = new List <string>(); int posTermo = -1; int posPubTermo = -1; palavras.AddRange(PegarPalavras(TratarTexto(pub.Title))); palavras.AddRange(PegarPalavras(TratarTexto(pub.Abstract))); palavras.AddRange(PegarPalavras(TratarTexto(pub.AuthorKeywords))); palavras = TratarPalavras(palavras, stopWords); foreach (string p in palavras) { posTermo = termos.FindIndex(t => t.Texto == p); if (posTermo >= 0) { posPubTermo = termos[posTermo].PublicacoesTermos.FindIndex(pt => pt.CodigoPublicacao == pub.CodigoPublicacao); if (posPubTermo >= 0) { termos[posTermo].PublicacoesTermos[posPubTermo].Ocorrencias++; } else { termos[posTermo].PublicacoesTermos.Add(new PublicacaoTermo { CodigoPublicacao = pub.CodigoPublicacao, Ocorrencias = 1 }); } } else { termo = new Termo { Texto = p, Valido = true }; termo.PublicacoesTermos.Add(new PublicacaoTermo { CodigoPublicacao = pub.CodigoPublicacao, Ocorrencias = 1 }); termos.Add(termo); } } i++; } SalvarTermos(termos); }