gpt4 book ai didi

elasticsearch - Solr使用索引字段进行半径的空间搜索?

转载 作者:行者123 更新时间:2023-12-02 23:26:12 26 4
gpt4 key购买 nike

所以我有一个城市指数,看起来像这样:

{
"location": "41.388587, 2.175888",
"name": "BARCELONA",
"radius": 20
}

我们有几十个。我需要能够通过一个lat / lng组合查询此索引,并查看它是否属于我们的“城市”之一。
location属性是城市的中心,而 radius是城市的半径(以公里为单位)(假设所有城市均为圆形)。我们还可以假设没有城市重叠。

如何返回经纬度组合是否在城市内?

例如,给定点 40.419691, -3.701254,如何确定它是否在BARCELONA范围内?

最佳答案

您可以在Lucene,Solr或ES中轻松完成此操作。

以Solr为例:

  • 声明SpatialRecursivePrefixTreeFieldType的类型。这使您可以索引不同的形状,而不仅仅是
  • 通过使用纬度/经度和半径来创建
  • ,您可以为每个城市创建一个特定的圆圈,然后在“形状”字段中为该形状编制索引:
    {
    "location": "41.388587, 2.175888",
    "name": "BARCELONA",
    "shape": "CIRCLE (2.175888 41.388587, 20)"
    }
  • ,然后您只需查询与您的观点相交的任何文档(未经测试):
    fq=shape:"Intersects(40.419691 -3.701254)"

  • 请确保检查您正在使用的Lucene / Solr / ES的特定版本的docs和javadocs,因为此空间中的API一直在变化

    关于elasticsearch - Solr使用索引字段进行半径的空间搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788681/

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