我正在尝试使用app引擎的搜索API来搜索位置: https://developers.google.com/appengine/docs/python/search/overview#Performing_Location-Based_Searches
问题是无论我做什么,我都得到零结果。我将搜索lat / lng设置为文档的GeoPoint属性上的确切点,它仍然返回零。
我知道常规搜索正在运行,因为如果我将查询更改为常规全文搜索,则可以正常搜索。
以下是我的数据示例(这实际上来自此处的示例应用:http://www.youtube.com/watch?v=cE6gb5pqr1k)
Full Text Search > stores1
Document Id: sanjose
Field Name Field Value
store_address 123 Main St.
store_location search.GeoPoint(latitude=37.37, longitude=-121.92)
store_name San Jose
然后我的查询:
index = search.Index('stores1')
loc = (37.37, -121.92)
query = "distance(store_location, geopoint(37.37, -121.92)) < 4500"
loc_expr = "distance(store_location, geopoint(37.37, -121.92))"
sortexpr = search.SortExpression(
expression=loc_expr,
direction=search.SortExpression.ASCENDING, default_value=4501)
search_query = search.Query(
query_string=query,
options=search.QueryOptions(
sort_options=search.SortOptions(expressions=[sortexpr])))
results = index.search(search_query)
print results
回报:
search.SearchResults(number_found=0L)
我错过了什么或做错了什么?这应该至少返回一个结果,对吧?
**更新**
在做了一些撬/搜索/测试后,我认为这可能是关于谷歌应用引擎开发服务器的错误。
如果我对生产环境中的相同数据运行位置搜索,我会得到预期的结果。当我在开发环境中对数据进行比较并运行完全相同的查询时,我得到意外的0结果。
如果有人对此有任何见解,请告知。否则,对于那些看到相同问题的人,我在app engine的问题跟踪器上创建了一个问题 here。
答案 0 :(得分:4)
你可能已经想到了这一点,但是如果有人遇到这篇文章,AppEngine的Search API的geosearch功能会在开发服务器上返回零结果。来自https://developers.google.com/appengine/training/fts_intro/lesson2:
“...开发Web服务器(本地运行)不完全支持某些搜索查询,因此您需要使用已部署的应用程序运行它们。”
这是另一个有用的链接: https://developers.google.com/appengine/docs/python/search/devserver