2

使用 GAE Search API (1.7.6) 按距离搜索地理位置总是返回零结果...

我构建以下查询:distance(geoLocation, geopoint(27.241131, -82.464445)) < 16093 /* 10 Miles in meters */

尽管我在距离内有地理点,但结果始终为零。例如,我的搜索原点在这种情况下lat: 27.241131, lgn: -82.464445,范围内的地理点之一是lat:27.233247, lng-82.48819800000001.

当我使用谷歌地图 api v3 计算距离时,如下所示:

  google.maps.geometry.spherical.computeDistanceBetween (
new google.maps.LatLng(27.241131, -82.464445), 
new google.maps.LatLng(27.233247, -82.48819800000001)) = 2509.46

这就是我将地理点与其他字段一起存储的方式

dictFields = []

dictFields.append(search.AtomField(name = 'zipcode', value = k.get('zipcode')))

geopoint = search.GeoPoint(float(lat), float(lng))
dictFields.append(search.GeoField(name = 'geoLocation', value = geopoint))

后来我做

search.Document(doc_id = document_id, fields = dictFields)

这里有什么问题?我知道 Search 有效,因为当我按不同于地理点的其他字段进行搜索时,它会返回结果。

搜索ID是这样完成的:

options = search.QueryOptions(limit=1000, returned_fields=['geoLocation', 'zipcode'])
query = search.Query(query_string=query_str, options=options)

在哪里query_str = distance(geoLocation, geopoint(27.241131, -82.464445)) < 16093

更新

我正在使用索引存储的地理点进行测试并获取 search.SearchResults(number_found=0L)。问题:这是否可以在开发环境中工作?

帮助表示赞赏!!!!

4

1 回答 1

1

我对此也有一个未解决的问题 - 我做了一些窥探,它看起来像是开发环境的问题。它在生产环境中工作。

如果您想关注,请参阅问题: 为什么基于地理搜索/位置的搜索返回零结果?

您还可以找到我提出的问题跟踪器的链接。

于 2013-03-25T17:34:13.010 回答