示例#1
0
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            FAQAnswer fAQAnswer = await db.FAQAnswers.FindAsync(id);

            if (fAQAnswer == null)
            {
                return(HttpNotFound());
            }
            return(View(fAQAnswer));
        }
示例#2
0
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            FAQAnswer fAQAnswer = await db.FAQAnswers.FindAsync(id);

            if (fAQAnswer == null)
            {
                return(HttpNotFound());
            }
            ViewBag.FAQId = new SelectList(db.FAQs, "Id", "Question", fAQAnswer.FAQId);
            return(View(fAQAnswer));
        }
示例#3
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,FAQId,Answer,CreatedBy,CreatedOn")] FAQAnswer fAQAnswer)
        {
            if (ModelState.IsValid)
            {
                fAQAnswer.ModifiedOn = DateTime.UtcNow;
                fAQAnswer.ModifiedBy = HttpContext.User.Identity.Name;

                db.Entry(fAQAnswer).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index", "FAQs"));
            }
            ViewBag.FAQId = new SelectList(db.FAQs, "Id", "Question", fAQAnswer.FAQId);
            return(View(fAQAnswer));
        }
示例#4
0
        public async Task <List <FAQAnswer> > GetFAQAnswerAsync(string query, float _scoreThreshold = 0.5f, int _top = 1, string metaInfo = null)
        {
            List <FAQAnswer> result = new List <FAQAnswer>();

            foreach (QuestionModel ques in _questionBase.Questions.Values)
            {
                _classifier.SetString1(ques.Question);
                _classifier.SetString2(query);
                float score = await _classifier.GetSentenceMatchResultAsync();

                if (score > _scoreThreshold)
                {
                    FAQAnswer ans = new FAQAnswer()
                    {
                        Score = score,
                        TopMatchedQuestion = ques.Question,
                        Questions          = GetQuestionByIds(_questionBase.AnswerToQuestionsMap[_questionBase.QuestionToAnswerMap[ques.QuestionId]]),
                        Answer             = _questionBase.Answers[_questionBase.QuestionToAnswerMap[ques.QuestionId]],
                    };
                    result.Add(ans);
                }
            }

            result = result.OrderByDescending(ob => ob.Score).ToList();
            HashSet <Guid>   mapper        = new HashSet <Guid>();
            List <FAQAnswer> filterSimilar = new List <FAQAnswer>();

            foreach (FAQAnswer answer in result)
            {
                if (answer.Answer != null && !mapper.Contains(answer.Answer.AnswerId))
                {
                    mapper.Add(answer.Answer.AnswerId);
                    filterSimilar.Add(answer);
                }
            }

            result = filterSimilar;

            List <FAQAnswer> outR = new List <FAQAnswer>();

            for (int count = 0; count < _top && count < result.Count; count++)
            {
                outR.Add(result[count]);
            }

            if (!string.IsNullOrEmpty(metaInfo))
            {
                List <FAQAnswer> final = new List <FAQAnswer>();
                foreach (var ans in outR)
                {
                    if (ans.Answer.MatchMetaInfo(metaInfo.Trim()))
                    {
                        final.Add(ans);
                    }
                }

                return(final);
            }

            return(outR);
        }