예제 #1
0
        public static async Task SaveSentence(string sentence, int level)
        {
            if (sentence.Length <= 2)
            {
                return;
            }
            var saved = await SentenceDao.GetByKeyAsync(sentence);

            if (saved != null)
            {
                await SentenceDao.DeleteAsync(saved.Id);

                await CommonKeywordMappingDao.DeleteAsync(saved.Id);
            }
            await SentenceDao.SaveAsync(
                new Sentence
            {
                CreatedTime  = DateTime.Now,
                Key          = sentence,
                LastUsedTime = DateTime.Now
            });

            var savedSentence = await SentenceDao.GetByKeyAsync(sentence);

            var toSaves = ParticipleProcessor.ParticipleSentence(sentence, savedSentence.Id, level);
            await CommonKeywordMappingDao.SaveAsync(toSaves);
        }
예제 #2
0
        public static async Task <IEnumerable <Sentence> > SearchBySentence(string sentence, int level)
        {
            var dictionary = Helper.GetDistinctCount(sentence.Trim().ToLowerInvariant().Split(' '));

            // remove longer keyword
            PreProcessOnDictionary(ref dictionary, level);
            var searchMappings = dictionary.Select(pair => new CommonMapping
            {
                Count = pair.Value,
                Key   = pair.Key
            });

            // get keyword mapping result
            var allResult = await CommonKeywordMappingDao.SearchKeywordMappingsAsync(searchMappings);

            var allMappings = new List <CommonMapping>();

            foreach (var tableResult in allResult)
            {
                allMappings.AddRange(tableResult);
            }

            // filter all sentence ids that do not contain all keywords.
            var firstFilter  = allMappings.Select(mapping => mapping.Id).Distinct().ToList();
            var secondFilter = new List <long>();

            firstFilter.ForEach(id =>
            {
                if (allMappings.Count(mapping => mapping.Id == id) == dictionary.Count)
                {
                    secondFilter.Add(id);
                }
            });

            var sentences = await SentenceDao.GetByIdsAsync(secondFilter);

            // sentence need to contain all longer keywords.
            var longerKeywords = dictionary.Where(pair => pair.Key.Length > level).ToList();

            return(sentences.Where(s =>
            {
                var notContained = false;
                foreach (var longerKeyword in longerKeywords)
                {
                    notContained = !s.Key.Contains(longerKeyword.Key);
                }
                return !notContained;
            }));
        }
예제 #3
0
 public void addSentence(string strSentence)
 {
     if (CommonHelper.checkUnicode(strSentence))
     {
         if (db.A_Sentence.Where(s => s.Sentence == strSentence).ToList().Count == 0)
         {
             SentenceDao senDao = new SentenceDao();
             senDao.Insert(new A_Sentence()
             {
                 Sentence = strSentence, SenSearch = strSentence
             });
         }
         long senId = db.A_Sentence.Where(s => s.Sentence == strSentence).FirstOrDefault().SentenceId;
         if (db.A_Sen_Mean.Where(s => s.SentenceId == senId).ToList().Count == 0)
         {
             senMeanDao.Insert(new A_Sen_Mean()
             {
                 SentenceId = senId
             });
         }
     }
     else
     {
         if (db.A_Mean.Where(s => s.MeanContent == strSentence).ToList().Count == 0)
         {
             MeanDao senDao           = new MeanDao();
             String  strContentSearch = CommonHelper.convertToUnSign3(strSentence);
             strContentSearch += ",";
             strContentSearch += strSentence;
             senDao.Insert(new A_Mean()
             {
                 MeanContent = strSentence, ContentSearch = strContentSearch
             });
         }
         long meanId = db.A_Mean.Where(s => s.MeanContent == strSentence).FirstOrDefault().MeanId;
         if (db.A_Sen_Mean.Where(s => s.MeanId == meanId).ToList().Count == 0)
         {
             senMeanDao.Insert(new A_Sen_Mean()
             {
                 MeanId = meanId
             });
         }
     }
 }
예제 #4
0
        public A_Sen_Mean nextSentence(A_Sen_Mean tblSenMean, int intCountry)
        {
            //lay thong tin SentenceId va MeanId tu man hinh
            var tblSenMeanSearch = db.A_Sen_Mean.Find(tblSenMean.SenMeanId);

            if (intCountry == 0)
            {
                //cap nhat lai ngay Mean
                MeanDao meanDao = new MeanDao();
                meanDao.UpdateTime(meanDao.FindById(tblSenMeanSearch.MeanId.Value));

                return(senMeanDao.getListSortByMeanUpdateTime().FirstOrDefault());
            }
            else
            {
                //cap nhat lai ngay Sentence
                SentenceDao senDao = new SentenceDao();
                senDao.UpdateTime(senDao.FindById(tblSenMeanSearch.SentenceId.Value));

                return(senMeanDao.getListSortBySenUpdateTime().FirstOrDefault());
            }
        }
예제 #5
0
 public static async Task <IEnumerable <Sentence> > GetAllSentence()
 {
     return(await SentenceDao.GetAllAsync());
 }
예제 #6
0
        public void addSentenceTrans(A_Sen_Mean tblSenMean, string ctrSentenceTrans, int strCountry)
        {
            SentenceDao senDao  = new SentenceDao();
            MeanDao     meanDao = new MeanDao();

            if (strCountry == 0)
            {
                if (db.A_Sentence.Where(s => s.Sentence == ctrSentenceTrans && s.ActiveFlag == 1).ToList().Count == 0)
                {
                    senDao.Insert(new A_Sentence()
                    {
                        Sentence = ctrSentenceTrans, SenSearch = ctrSentenceTrans
                    });
                }

                //lay thong tin SentenceId va MeanId tu man hinh
                var tblSenMeanSearch = db.A_Sen_Mean.Find(tblSenMean.SenMeanId);

                //lay thong tin SentenceId vua insert
                long senId = db.A_Sentence.Where(s => s.Sentence == ctrSentenceTrans && s.ActiveFlag == 1).FirstOrDefault().SentenceId;
                if (db.A_Sen_Mean.Where(s => s.SentenceId == senId && s.MeanId == tblSenMeanSearch.MeanId).FirstOrDefault() == null)
                {
                    tblSenMean = senMeanDao.FindById(tblSenMean.SenMeanId);
                    if (db.A_Sen_Mean.Find(tblSenMean.SenMeanId).SentenceId == null)
                    {
                        tblSenMean.SentenceId = senId;
                        senMeanDao.Update(tblSenMean);
                    }
                    else
                    {
                        senMeanDao.Insert(new A_Sen_Mean()
                        {
                            MeanId = tblSenMean.MeanId, SentenceId = senId
                        });
                    }
                }
            }
            else
            {
                if (db.A_Mean.Where(s => s.MeanContent == ctrSentenceTrans && s.ActiveFlag == 1).ToList().Count == 0)
                {
                    String strContentSearch = CommonHelper.convertToUnSign3(ctrSentenceTrans);
                    strContentSearch += ",";
                    strContentSearch += ctrSentenceTrans;
                    meanDao.Insert(new A_Mean()
                    {
                        ContentSearch = strContentSearch, MeanContent = ctrSentenceTrans
                    });
                }

                //lay thong tin SentenceId va MeanId tu man hinh
                var tblSenMeanSearch = db.A_Sen_Mean.Find(tblSenMean.SenMeanId);

                //lay thong tin SentenceId vua insert
                long meanId = db.A_Mean.Where(s => s.MeanContent == ctrSentenceTrans && s.ActiveFlag == 1).FirstOrDefault().MeanId;
                if (db.A_Sen_Mean.Where(s => s.SentenceId == tblSenMeanSearch.SentenceId && s.MeanId == meanId).FirstOrDefault() == null)
                {
                    tblSenMean = senMeanDao.FindById(tblSenMean.SenMeanId);
                    if (db.A_Sen_Mean.Find(tblSenMean.SenMeanId).MeanId == null)
                    {
                        tblSenMean.MeanId = meanId;
                        senMeanDao.Update(tblSenMean);
                    }
                    else
                    {
                        senMeanDao.Insert(new A_Sen_Mean()
                        {
                            MeanId = meanId, SentenceId = tblSenMean.SentenceId
                        });
                    }
                }
            }
        }