【问题标题】:Sort Geospatial Data by Time Posted with Redis使用 Redis 按发布时间对地理空间数据进行排序
【发布时间】:2020-10-21 19:34:38
【问题描述】:

我正在尝试对从 georadius 获得的一堆数据进行排序,以便根据数据发布的时间按时间顺序进行排序。因此,如果我发布 item1、item3、item2、item4 并且它们都在 georadius 命令的范围内,则无论距离如何,它都应该返回 item4、item2、item3 和 item1。我将如何使用 redis 的地理空间命令来做到这一点?谢谢!

【问题讨论】:

  • 你考虑过redisearch.io吗?它是一个 Redis 模块,可以帮助您运行按 Geo 过滤的查询,然后对结果进行排序
  • 我实际上已经安装了它以用于我的搜索引擎。不过我有点困惑,我如何使用 RediSearch 来查看发布时间?
  • 我真的只使用自动完成功能 ft.sugadd、ft.sugdel 和 ft.sugget。您能否通过我运行使用 RediSearch 对 georadius 的结果进行排序的步骤?特别是使用的命令?
  • 不和谐聊天可能比这里的cmets更好的地方discord.gg/xTbqgTB
  • 感谢参考!刚刚发了一条消息。

标签: sorting redis geospatial


【解决方案1】:

首先,您需要保存每个项目的发布时间。例如,您可以为每个项目设置一个键值对,键为项目名称,值为发布时间。

当您发布项目时,将其添加到地理信息的 GEO 结构中,并记录发布时间:

  1. GEOADD geo lng lat item1
  2. SET posttime:item1 timestamp-in-seconds

当您要进行搜索时,请执行以下步骤:

  1. 使用带有STORE 选项的GEORADIOUS 命令将结果保存到排序集中。让我们将排序集命名为 temp result
  2. 使用SORT 命令对临时结果和发布时间进行排序:SORT temp_result BY posttime:* DESC

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多