RedisSearch Go Client 如何使用Geo Field

问题描述

我尝试将 redisearch-go 库与 Geo Field 结合使用。

我不明白如何为文档设置地理字段。

我的架构如下。

schema := redisearch.NewSchema(redisearch.DefaultOptions).
AddField(redisearch.NewTextField("vehicle_id")).
AddField(redisearch.NewGeoField("location"))
    
indexDeFinition := redisearch.NewIndexDeFinition().AddPrefix("vehicles:")

if err := client.CreateIndexWithIndexDeFinition(schema,indexDeFinition); err != nil {
    log.Fatal(err)
    println(err)
}

doc := redisearch.NewDocument("veh_1",1.0)

doc.Set("vehicle_id","vehicle_1").
Set("location",?????????? )

if err := c.Index([]redisearch.Document{doc}...); err != nil {
    log.Fatal(err)
    println(err)
}

帮助我如何将geofeild定义为下面代码中用问号标记的接口。

doc.Set("vehicle_id","vehicle_1").Set("location",?????????? )

解决方法

@Buddhika redisearch 的 godoc 参考包含几个示例,其中一个是与您所描述的内容相关的地理示例。

示例说明如下:

以下示例说明了使用 RediSearch 进行地理空间搜索。此示例映射到 https://redis.io/commands/georadius#examples 上展示的 Redis vanilla 示例。我们将首先添加两个文档(每个城市一个),然后根据起点和 2 个不同的半径进行地理半径搜索:1)- 第一个以 long,lat 15,37 为中心的半径为 100KM 的查询应该只输出名为“卡塔尼亚”的城市; 2)- 以 long,37 为中心的 200KM 半径的第二个查询,应输出名为“Palermo”和“Catania”的城市;

我认为回答这个问题应该足够了。如果没有,我们总是可以在文档中添加更多示例。 https://pkg.go.dev/github.com/RediSearch/redisearch-go@v1.1.1/redisearch#example-Client.Search