public string GetAnswer(string S) { string AnswerText; int IdAnswer; bool Done = false; IEnumerable <string> RequestWords; RequestWords = GetWords(S); int wordsCount = RequestWords.Count(); using (var db = new LiteDatabase(filePath)) { var requests = db.GetCollection <Request>("requests"); var answers = db.GetCollection <Answer>("answers"); if (requests.Find(x => x.Text.Equals(S)).Count() != 0) { var request = requests.Find(x => x.Text.Equals(S)); IdAnswer = request.ElementAt(0).AnwserId; if (IdAnswer != -1) { AnswerText = "Ваш ответ :" + ((answers.Find(x => x.Id == IdAnswer)).ElementAt(0)).Text; Done = true; } else { AnswerText = "Вопрос в очереди на рассмотрение экспертом"; } } else { int[] Ar = new int[requests.FindAll().Count()]; int i = 0; for (i = 0; i < requests.FindAll().Count(); i++) { Ar[i] = 0; } i = 0; foreach (var req in requests.FindAll()) { foreach (string word in RequestWords) { for (int j = 0; j < GetWords(req.Text).Count(); j++) { if (word.Equals(GetWords(req.Text).ElementAt(j))) { Ar[i] += 1; } } } i++; } int Max = 0, Maxi = -1; for (i = 0; i < requests.FindAll().Count(); i++) { if (Ar[i] > 0) { Maxi = i; Max = Ar[i]; } } if (Max >= WordsCount[wordsCount]) { IdAnswer = requests.FindById(Maxi + 1).AnwserId; if (IdAnswer < 0) { AnswerText = "Ответ не найден"; //MessageBox.Show(RequestWords.ElementAt(0) + RequestWords.ElementAt(1)); var request = new Request { AnwserId = -1, Text = S, Words = RequestWords }; requests.Insert(request); } else { if (Max == wordsCount) { AnswerText = "Ваш ответ :" + answers.FindById(IdAnswer).Text; } else { if (MessageBox.Show("Возможно вы имелли ввиду" + answers.FindById(IdAnswer).Text, "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { AnswerText = "Ваш ответ :" + answers.FindById(IdAnswer).Text; } else { AnswerText = "Ответ на ваш вопрос мне не известен, я спрошу у Эксперта"; } } } } else { AnswerText = "Ответ не найден"; //MessageBox.Show(RequestWords.ElementAt(0) + RequestWords.ElementAt(1)); var request = new Request { AnwserId = -1, Text = S, Words = RequestWords }; requests.Insert(request); } } } return(AnswerText); }
public string GetAnswer(string S) { string AnswerText; int IdAnswer; bool Done = false; IEnumerable <string> RequestWords; RequestWords = GetWords(S); filePath = System.IO.Path.Combine(mydocpath, "Requests-Answers.db"); using (var db = new LiteDatabase(filePath)) { var requests = db.GetCollection <Request>("requests"); var answers = db.GetCollection <Answer>("answers"); if (requests.Find(x => x.Text.Equals(S)).Count() != 0) { var request = requests.Find(x => x.Text.Equals(S)); IdAnswer = request.ElementAt(0).AnwserId; if (IdAnswer != -1) { AnswerText = ((answers.Find(x => x.Equals(IdAnswer))).ElementAt(0)).Text; Done = true; } else { AnswerText = "Вопрос в очереди на рассмотрение"; } } else { int[] Ar = new int[requests.FindAll().Count()]; int i = 0; for (i = 0; i < requests.FindAll().Count(); i++) { Ar[i] = 0; } i = 0; int wordsCount = RequestWords.Count(); foreach (var req in requests.FindAll()) { foreach (string word in RequestWords) { foreach (string wor in req.Words) { if (word.Equals(wor)) { Ar[i] += 1; } } } i++; } int Max = 0, Maxi = -1; for (i = 0; i < requests.FindAll().Count(); i++) { if (Ar[i] > 0) { Maxi = i; Max = Ar[i]; } } if (Max == 0) { AnswerText = "Ответ не найден"; var request = new Request { AnwserId = -1, Text = S, Words = RequestWords }; requests.Insert(request); } else { IdAnswer = requests.FindById(Maxi).AnwserId; AnswerText = answers.FindById(IdAnswer).Text; } } } return(AnswerText); }