在用户查询时,有时候有需要把“同城”,“同行”等相关度教高的用户排在前面的需求。
而使用sql的排序可以简单的实现这个需求,但也有不全面的地方。
//根据同乡同行排序
$data = $userModel->with(['hometown','trade','city'])->orderByRaw("ABS({$self->trade_id}
- trade_id) + ABS({$self->hometown_id} - hometown_id) + ABS({$self->city_id} - city_id)")
->orderBy('info_rate','DESC')->paginate($limit,$this->field);
思路如上所示(代码是laravel的orm语法):
以用户与被查询用户的行业id , 城市id等之间id的差的绝对值作为 orderBy的字段。
本文介绍了一种使用SQL进行个性化排序的方法,通过计算用户与查询目标之间的行业ID、城市ID等特征的差值绝对值,实现了将相关度较高的同城、同行用户优先展示的需求。这种方法适用于需要按相关性排序的场景。
354

被折叠的 条评论
为什么被折叠?



