| | |
| | | @RequestMapping("/system/hospital") |
| | | public class HospDataController extends BaseController { |
| | | |
| | | /** |
| | | * 医院搜索最低匹配分数阈值(低于此分数的结果将被过滤) |
| | | */ |
| | | private static final int MIN_MATCH_SCORE_THRESHOLD = 1; |
| | | |
| | | @Autowired |
| | | private HospDataMapper hospDataMapper; |
| | | |
| | |
| | | districtNames |
| | | ); |
| | | |
| | | // 只保留有匹配的医院 |
| | | if (matchScore > 0) { |
| | | // 只保留匹配分数达到阈值的医院 |
| | | if (matchScore >= MIN_MATCH_SCORE_THRESHOLD) { |
| | | matchResults.add(new HospitalMatchResult(hospital, matchScore)); |
| | | } |
| | | } |
| | | |
| | | long matchTime = System.currentTimeMillis(); |
| | | logger.info("匹配计算完成,找到 {} 个匹配的医院,耗时: {}ms", matchResults.size(), matchTime - matchStartTime); |
| | | logger.info("匹配计算完成,找到 {} 个匹配的医院(分数>={}}),耗时: {}ms", |
| | | matchResults.size(), MIN_MATCH_SCORE_THRESHOLD, matchTime - matchStartTime); |
| | | |
| | | // 4. 按匹配分数降序排序(分数越高排名越靠前) |
| | | matchResults.sort(Comparator.comparingInt(HospitalMatchResult::getMatchScore).reversed()); |
| | | // 4. 按匹配分数降序排序,分数相同时按医院名称长度升序排序(名称越短越靠前) |
| | | matchResults.sort(Comparator |
| | | .comparingInt(HospitalMatchResult::getMatchScore).reversed() |
| | | .thenComparingInt(result -> result.getHospital().getHospName().length())); |
| | | |
| | | // 5. 限制返回数量 |
| | | if (pageSize != null && pageSize > 0 && matchResults.size() > pageSize) { |