gpt4 book ai didi

algorithm - 如何按位置和日期范围高效搜索大型数据集?

转载 作者:可可西里 更新时间:2023-11-01 10:06:55 24 4
gpt4 key购买 nike

我有一个 MongoDB 集合,其中包含如下属性:

longitude, latitude, start_date, end_date, price

我有超过 5 亿份文件。

我的问题是如何尽可能高效地按经纬度、日期范围和价格进行搜索?
在我看来,我的选择是:

  1. 在纬度/经度上创建地理空间索引并使用 MongoDB 的邻近搜索...然后根据日期范围和价格对其进行过滤。
    • 我还没有对此进行测试,但我担心数据量太大,无法快速搜索,因为我们每秒大约进行 1 次搜索。
    • 您是否体验过 MongoDB 在这些情况下会如何 react ?
  2. 按位置将数据分成多个集合。即通过 london_collection、paris_collection、new_york_collection 等城市。
    • 然后我必须先按纬度/经度查询,找到最近的城市集合,然后使用日期和价格过滤器对该集合中的子集数据进行 MongoDB 空间搜索。
    • 我的文件分布不均,因为有些城市的文件比其他城市多。
  3. 按日期而不是位置创建收藏。与上面相同,但每个文档都根据其日期范围分配了一个集合。
    • 搜索的日期范围跨越多个集合时出现问题。
  4. 根据 city_start_date_end_date 为每个文档创建唯一 ID。
    • 同样,我将不得不使用我的纬度/经度查询来查找最近的城市并附加日期范围以访问 key 。这似乎很快,但我不太喜欢城市仰视方面...它看起来有点丑。

我正在尝试选项 1。)但真的很想在我走得太远之前听听您的想法吗?

搜索引擎如何拆分和管理它们的数据...这一定是一类问题吗?

而且我不必使用 MongoDB,我愿意接受其他选择吗?

非常感谢。

最佳答案

索引和数据访问性能是一个深刻而复杂的主题。许多因素都会影响最有效的解决方案,包括数据集的大小、读写比率、IO 和后备存储的相对性能等。

虽然我不能给你一个具体的答案,但我可以建议调查使用莫顿数作为提取多个相似数值(如经度)的有效方法。

Morton number

关于algorithm - 如何按位置和日期范围高效搜索大型数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com