需求是这样的。 用户 A (开始时间 结束时间) 用户 B (开始时间 结束时间) 。。。
用户 N (开始时间 结束时间)
匹配出用户 A 对应其他用户的优先级
首先匹配开始时间最相近的 然后匹配结束时间最相近的 最后进行排序
这个需求我该怎么设计
![]() | 1 shanghai1943 2021-08-25 15:46:29 +08:00 你这需求看的一头雾水。。要不你先描述的清楚一点再说吧。 |
2 luman 2021-08-25 15:55:26 +08:00 ![]() order by abs(begin_time - match_begin_time),abs(end_time - match_end_time) 如果数据不多,用 mysql 这么玩试试 |
3 awanganddong OP @sunjiayao 谢谢 @shanghai1943 需要做用户的匹配功能。需要根据距离维度和时间维度对用户进行匹配度的筛选。 首先匹配出发地,然后匹配到达地。其次匹配出发时间,最好匹配到达时间。 也就是拿我自身的维度与其他用户维度进行匹配。 然后进行排序 |
4 jmcjmc06 2021-08-25 21:29:43 +08:00 via Android 我的归纳理解能力需要进一步提升 |
![]() | 5 imn1 2021-08-26 15:11:38 +08:00 我帮楼主举个例子吧(按我的理解): 医院挂号,需求就是搜索病人 A 在当天排第几 如果这都理解错了,那就不知道谁要重修语文了 |
6 awanganddong OP 大家做过滴滴顺风车吧。和这个场景类型 顺风车根据自己的行程。 出发地点,到达地点,出发时间,到达时间,去匹配和我最优的打车人。 |
![]() | 7 aieike 2021-08-26 19:21:58 +08:00 谁结束时间早, 谁就优先级高, 不就好了吗 |
8 awanganddong OP |
9 awanganddong OP 知道怎么处理了,仅仅是两个维度,一个是坐标。 一个是一个点对于一个点的绝对值。 es 也有对于函数。 ``` { "query": { "bool": { "must": { "script": { "script": { "inline": "doc['f1'].value - doc['f2'].value < Math.abs(9)", "lang": "groovy" } } } } } } ``` |