private void CriarIndice() { List<INDICE> indices = new List<INDICE>(); Dictionary<VOCABULARIO,int> dicIndice = new Dictionary<VOCABULARIO,int>(); foreach (var termo in Termos) { VOCABULARIO voc = new VOCABULARIO(); //vai criar um termo na base caso não exista e retornar com seu ID voc = _vocabularioRepositorio.GetVocabularioByTermo(termo); if (dicIndice.ContainsKey(voc)) { //existe então adiciona mais um na frequencia do termo no documento dicIndice[voc]++; } else { //caso contrario será um dicIndice[voc] = 1; } } //implementa a lista de indices para o bulkInsert no banco já ordenada pela frequencia foreach (var iDic in dicIndice.OrderByDescending(d =>d.Value)) { INDICE indice = new INDICE(); indice.IND_DOCUMENTO = Documento.DOC_ID; indice.IND_VOCABULARIO = iDic.Key.VOC_ID; indice.IND_FREQUENCIA = iDic.Value; indices.Add(indice); } _indiceRepositorio.InsereBulkIndice(indices); }
private VOCABULARIO InsereVocabulario(VOCABULARIO vocabulario) { _context.VOCABULARIOs.Add(vocabulario); Save(); return _context.VOCABULARIOs.FirstOrDefault(v => v.VOC_TERMO == vocabulario.VOC_TERMO); }
public VOCABULARIO GetVocabularioByTermo(string termo) { VOCABULARIO vocabulario = _context.VOCABULARIOs.FirstOrDefault(v => v.VOC_TERMO == termo); //Se for nulo deve criar o termo na base de dados if (vocabulario == null ) { VOCABULARIO voc = new VOCABULARIO(); voc.VOC_TERMO = termo; return InsereVocabulario(voc); } return vocabulario; }