用户匹配 排序问题请求

2021-08-25 13:51:35 +08:00
 awanganddong

需求是这样的。 用户 A (开始时间 结束时间) 用户 B (开始时间 结束时间) 。。。

用户 N (开始时间 结束时间)

匹配出用户 A 对应其他用户的优先级

首先匹配开始时间最相近的 然后匹配结束时间最相近的 最后进行排序

这个需求我该怎么设计

1458 次点击
所在节点    程序员
9 条回复
shanghai1943
2021-08-25 15:46:29 +08:00
你这需求看的一头雾水。。要不你先描述的清楚一点再说吧。
sunjiayao
2021-08-25 15:55:26 +08:00
order by abs(begin_time - match_begin_time),abs(end_time - match_end_time) 如果数据不多,用 mysql 这么玩试试
awanganddong
2021-08-25 18:01:18 +08:00
@sunjiayao 谢谢
@shanghai1943 需要做用户的匹配功能。需要根据距离维度和时间维度对用户进行匹配度的筛选。

首先匹配出发地,然后匹配到达地。其次匹配出发时间,最好匹配到达时间。

也就是拿我自身的维度与其他用户维度进行匹配。
然后进行排序
jmcjmc06
2021-08-25 21:29:43 +08:00
我的归纳理解能力需要进一步提升
imn1
2021-08-26 15:11:38 +08:00
我帮楼主举个例子吧(按我的理解):

医院挂号,需求就是搜索病人 A 在当天排第几

如果这都理解错了,那就不知道谁要重修语文了
awanganddong
2021-08-26 17:32:00 +08:00
大家做过滴滴顺风车吧。和这个场景类型

顺风车根据自己的行程。
出发地点,到达地点,出发时间,到达时间,去匹配和我最优的打车人。
aieike
2021-08-26 19:21:58 +08:00
谁结束时间早, 谁就优先级高, 不就好了吗
awanganddong
2021-08-27 09:36:02 +08:00
@aieike 就比如你打算去上地,然后拼车。
拼车的人有去上地的,有去望京的。
你直接按结束时间早,进行匹配,然后你匹配了一个去望京的人。
awanganddong
2021-08-28 10:13:04 +08:00
知道怎么处理了,仅仅是两个维度,一个是坐标。
一个是一个点对于一个点的绝对值。
es 也有对于函数。
```
{
"query": {
"bool": {
"must": {
"script": {
"script": {
"inline": "doc['f1'].value - doc['f2'].value < Math.abs(9)",
"lang": "groovy"
}
}
}
}
}
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX