private void GetAllIndiceHashStructureValue() { try { using (FileStream readStream = new FileStream(strNameIndiceHashtags, FileMode.Open)) { while (readStream.Position < readStream.Length) { if (readStream.Position > 0) { readStream.Position += 1; } BinarySearchAlgorithm bsa = new BinarySearchAlgorithm(); StrFileIndiceHashtags oReturn = bsa.GetFileValue <StrFileIndiceHashtags>(readStream); StringBuilder ids = new StringBuilder(); for (int i = 0; i < 1000; i++) { if (oReturn.Ids[i] != 0) { if (i == 0) { ids.Append(oReturn.Ids[i]); } else { ids.Append("," + oReturn.Ids[i]); } } } Console.WriteLine(string.Format("HashTag: {0}|Ids: [{1}]", oReturn.Hashtag, ids.ToString().Trim())); } } Console.WriteLine("Pressione uma tecla para continuar."); Console.ReadKey(); } catch (Exception ex) { throw ex; } }
private void GetPositionIndexDataByHashTag() { Console.Clear(); try { Console.WriteLine("Informe a HashTag"); string hashTagBusca = Console.ReadLine(); if (hashTagBusca.Trim() == "") { throw new Exception("Erro"); } DateTime begin = DateTime.UtcNow; List <FileStream> listaStream = new List <FileStream>(); listaStream.Add(new FileStream(strNameFile, FileMode.Open)); listaStream.Add(new FileStream(strNameIndiceHashtags, FileMode.Open)); while (listaStream[1].Position < listaStream[1].Length) { if (listaStream[1].Position > 0) { listaStream[1].Position += 1; } BinarySearchAlgorithm bsa = new BinarySearchAlgorithm(); StrFileIndiceHashtags oReturn = bsa.GetFileValue <StrFileIndiceHashtags>(listaStream[1]); if (oReturn.Hashtag.Contains(hashTagBusca.Trim())) { for (int i = 0; i < 1000; i++) { if (oReturn.Ids[i] == 0) { break; } StrFileIndice sfi = new StrFileIndice(); if (bsa.BinarySearchById(oReturn.Ids[i], strNameFileIndice, ref sfi)) { listaStream[0].Seek(sfi.Posicao, SeekOrigin.Begin); StrFile oReturnData = bsa.GetFileValue <StrFile>(listaStream[0]); Console.WriteLine(string.Format("Id: {0}", oReturnData.Id)); Console.WriteLine(string.Format("Usuário: {0}", oReturnData.Usuario)); Console.WriteLine(string.Format("Mensagem: {0}", oReturnData.Mensagem)); Console.WriteLine(string.Format("Data: {0}", oReturnData.Data.Trim() + "9")); Console.WriteLine(string.Format("País: {0}", oReturnData.Pais)); Console.WriteLine(string.Format("Hashtags: {0}", oReturnData.HashTags)); Console.WriteLine("---------------------------------------------------------------------"); } } } } listaStream[0].Close(); listaStream[1].Close(); listaStream[0].Dispose(); listaStream[1].Dispose(); double total = (DateTime.UtcNow - begin).TotalMilliseconds; DesempenhoModel dm = new DesempenhoModel(); dm.NomeTeste = "Tempo dado hashtag(Arquivo)"; dm.TempoExecucao = total; dm.Data = DateTime.Now; desempenhoDao.Store(dm); Console.WriteLine("Pressione uma tecla para continuar."); Console.ReadKey(); } catch (Exception) { Console.WriteLine("Dados inválidos."); Console.WriteLine("Pressione uma tecla para continuar."); Console.ReadKey(); } }
private void GenerateAllIndiceHashtags() { Console.Clear(); try { Console.WriteLine("Aguarde. Gerando índice."); List <FileStream> listaStream = new List <FileStream>(); listaStream.Add(new FileStream(strNameFile, FileMode.Open)); listaStream.Add(new FileStream(strNameIndiceHashtags, FileMode.Open)); listaStream[0].Seek(0, SeekOrigin.Begin); while (listaStream[0].Position < listaStream[0].Length) { if (listaStream[0].Position > 0) { listaStream[0].Position += 1; } BinarySearchAlgorithm bsa = new BinarySearchAlgorithm(); StrFile oReturn = bsa.GetFileValue <StrFile>(listaStream[0]); string[] hashtagsarray = oReturn.HashTags.Split("#"); foreach (string hashtag in hashtagsarray) { if (hashtag.Trim() != "" && (hashtag.ToLower().Contains("rock") || hashtag.ToLower().Contains("metal") || hashtag.ToLower().Contains("punk") || hashtag.ToLower().Contains("hard"))) { FileWrite fw = new FileWrite(); bool achou = false; string hashtagAux = "#" + hashtag.Trim(); listaStream[1].Seek(0, SeekOrigin.Begin); while (listaStream[1].Position < listaStream[1].Length) { if (listaStream[1].Position > 0) { listaStream[1].Position += 1; } StrFileIndiceHashtags oReturnInd = bsa.GetFileValue <StrFileIndiceHashtags>(listaStream[1]); if (oReturnInd.Hashtag.Trim() == hashtagAux.Trim()) { achou = true; for (int i = 1; i < 1000; i++) { if (oReturnInd.Ids[i] == 0) { oReturnInd.Ids[i] = oReturn.Id; break; } } long tamanhoBytes = Marshal.SizeOf(typeof(StrFileIndiceHashtags)); if (listaStream[1].Position > 0) { listaStream[1].Position -= tamanhoBytes; } byte[] buf = fw.GetBytes(oReturnInd); listaStream[1].Write(buf); } } if (!achou) { StrFileIndiceHashtags sfih = new StrFileIndiceHashtags(); sfih.Hashtag = hashtagAux; sfih.Ids = new long[1000]; sfih.Ids[0] = oReturn.Id; sfih.NewLine = '\n'; long position = 0; if (listaStream[1].Length > 0) { position = listaStream[1].Length + 1; listaStream[1].Position = position; } byte[] buf = fw.GetBytes(sfih); listaStream[1].Write(buf); } } } } listaStream[0].Close(); listaStream[1].Close(); listaStream[0].Dispose(); listaStream[1].Dispose(); Console.WriteLine("Pressione uma tecla para continuar."); Console.ReadKey(); } catch (Exception ex) { throw ex; } }