Esempio n. 1
0
        public IActionResult SearchProblems([FromForm] ProblemSearch search)
        {
            var li   = _Repository.GetAllProblems();
            var tags = search.Tags.Trim().Split(' ', StringSplitOptions.RemoveEmptyEntries);

            if (!string.IsNullOrEmpty(search.ProblemDescription))
            {
                // 先筛有题目描述的题
                li = li.Where(p => !string.IsNullOrEmpty(p.ProblemDescription));
                li = li.OrderByDescending(p =>
                {
                    var tagW = SimilarityTool.TagSim(p.Tags, tags);
                    var desW = SimilarityTool.LDistanceSim(search.ProblemDescription, p.ProblemDescription);
                    return(SimilarityTool.CalculateWeight(tagW, desW));
                });
            }
            else
            {
                // 没有题目描述
                li = li.OrderByDescending(p => SimilarityTool.TagSim(p.Tags, tags));
            }

            _Logger.LogInformation("Successfully search!");
            return(Ok(li));
        }