求解一个蛮奇怪的搜索场景, leetcode medium?

132 天前
 chanlk
我有数据存储在第三方的 server 上,数据的元数据(一些 key,value)中包含了 timestamp = 1723796004500 或者 time = yyyy-MM-dd HH:mm:ss 格式的时间。
上述两种格式可以任选一种,又或者你有其他的格式存储也可。

第三方 server 提供数据取回的 api ,提供了根据元数据过滤的功能,但仅支持字符串 startAt 匹配的方式。
下面的示例将返回具有以 ca 开头的动物属性的数据源(例如,cat 或 camel )。
"startsWith": {"key":"animal","Value":"ca"}

我需要怎么处理才能正确获得最近 N 小时的数据,N 的可能取值是[0,24].

一些额外的限制:
因为获取接口非常慢,所以每次只能请求一次,不能循环请求。
允许数据一些偏差,比如限定最近 1 小时,也可以是最近 1.2 或者 1.5 小时。

试过 gpt4 Claude3,还没有很好的答案

这个坑爹的场景来源于:
https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html
1. 要用 equals 的 Filter 去过滤用户
2. 要用 greatThan 的 Filter 去过滤时间,以得到最近 N 小时的数据
BUT! This data type is a UNION, so only one of the following members can be specified when used or returned.
只能使用一个 filter 去过滤!
因此我只能选择 startsWith 这种方式, 所以实际我的过滤条件前面是 用户的 token+时间
851 次点击
所在节点    程序员
3 条回复
chanlk
132 天前
带进制的时间表达估计是搞不定了,尝试采用"画正字"的方式。
0 代表 2024 年的 1 月 1 日 0 点 1 分 0 秒
3 代表 2024 年的 1 月 1 日 0 点 4 分 0 秒
9 代表 2024 年的 1 月 1 日 0 点 10 分 0 秒
a 代表 2024 年的 1 月 1 日 0 点 11 分 0 秒
c 代表 2024 年的 1 月 1 日 0 点 13 分 0 秒
z 代表 2024 年的 1 月 1 日 0 点 36 分 0 秒
A 代表 2024 年的 1 月 1 日 0 点 37 分 0 秒
C 代表 2024 年的 1 月 1 日 0 点 39 分 0 秒
Z 代表 2024 年的 1 月 1 日 1 点 02 分 0 秒
Z0 代表 2024 年的 1 月 1 日 1 点 03 分 0 秒

注意:这里不采用进位的模式,而是向后累加的方式,每个 Z 代表 62 分钟。

这样的问题是时间久了之后会非常占用位置,不过数据集最多只保存最近的一个月。
可能要设计一下了。
MoYi123
132 天前
andAll 和 orAll 能互相嵌套吗? 它好像没说不能.
chanlk
129 天前
@MoYi123 啊这,可以用 andAll ,把几个条件放在这个 andAll 里面。这个怪我没仔细看文档的每一个方法。
不过这个确实蛮怪的,和 SQL 的这种一个加一个思路不太一样。

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

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

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

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

© 2021 V2EX