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)); }