使用Google App Engine和搜索API进行近似搜索
我正在使用Python2.7、Google App Engine 1.9.*和搜索API。我存储了一些带有位置信息的兴趣点。现在我想实现一个GET请求,返回某个特定位置附近的所有兴趣点。
我在Google搜索API基础在线文档中找到的例子提到了排序查询结果。这个例子在GitHub的appengine-search-python-java库中也可以找到完整的源代码包。无论查询字符串是什么,找到的兴趣点(在例子中是商店)都会按距离排序,离得最近的排在最前面。
还有一些例子展示了如何限制返回的结果数量。你可以在更复杂的搜索API查询教程,查询选项部分中找到这些内容。
search_query = search.Query(
query_string=query.strip(),
options=search.QueryOptions(
limit=doc_limit,
...
不过,我的需求是根据距离来限制结果,而不是简单的返回固定数量的项目。有没有人有这方面的例子呢?
1 个回答
2
哎呀,我没有仔细看,答案就在同一个地方,位置相关查询(地理搜索)
# a query string like this comes from the client
query = "distance(store_location, geopoint(-33.857, 151.215)) < 45000"
try:
index = search.Index(config.STORE_INDEX_NAME)
search_results = index.search(query)
for doc in search_results:
# process doc ...
except search.Error:
# ...