2

我想使用的应用程序引擎的搜索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) 

我错过了什么或做错了什么?这应该返回至少那一个结果,对吧?

**更新**

做一些撬/搜索/测试后,我想这可能是关于谷歌的App Engine开发服务器的错误。

如果我在生产环境中的相同数据上运行位置搜索,我会得到预期的结果。当我比较并在开发环境中对数据运行完全相同的查询时,我得到意外的0结果。

如果有人对此有任何意见,请指教。否则,对于那些遇到同样问题的人,我在应用引擎的问题跟踪器 here上创建了一个问题。

+0

什么呢'打印results'打印到底是什么? – Awalias 2013-03-25 13:41:51

+0

它在那里:'search.SearchResults(number_found = 0L)' – kevin 2013-03-25 13:43:22

+0

这里是我的帖子了:http://stackoverflow.com/questions/15616200/why-is-geosearching-location-based-searches-returning-zero-结果 – user1791567 2013-03-26 12:56:39

回答

4

您可能已经知道了这一点,但万一有人遇到这篇文章,AppEngine Search API的地理搜索功能会在开发服务器上返回零结果。从https://developers.google.com/appengine/training/fts_intro/lesson2

“......一些搜索查询不完全支持(本地运行)的开发Web服务器上,所以你需要使用部署的应用程序来运行它们”

这里的另一个有用的链接: https://developers.google.com/appengine/docs/python/search/devserver