需求是这样的。 用户 A (开始时间 结束时间) 用户 B (开始时间 结束时间) 。。。
用户 N (开始时间 结束时间)
匹配出用户 A 对应其他用户的优先级
首先匹配开始时间最相近的 然后匹配结束时间最相近的 最后进行排序
这个需求我该怎么设计
1
shanghai1943 2021-08-25 15:46:29 +08:00
你这需求看的一头雾水。。要不你先描述的清楚一点再说吧。
|
2
sunjiayao 2021-08-25 15:55:26 +08:00 1
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" } } } } } } ``` |