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)

私は何かを逃しているのですか、それとも何か間違っているのですか?これにより、少なくとも1つの結果が返されるはずです。

** アップデート **

いくつかの詮索/検索/テストを行った後、これはGoogleAppEngine開発サーバーに関するバグである可能性があると思います。

本番環境で同じデータに対してロケーション検索を実行すると、期待どおりの結果が得られます。開発環境のデータに対してまったく同じクエリを比較して実行すると、予期しない結果が0になります。

誰かがこれについて何か洞察を持っているなら、アドバイスしてください。それ以外の場合は、同じ問題が発生している方のために、ここでAppEngineの課題追跡システムに課題を作成しました 。

4

1 に答える 1

4

あなたはおそらくこれをすでに理解しているでしょうが、誰かがこの投稿に出くわした場合、AppEngineの検索APIのジオサーチ機能は開発サーバーでゼロの結果を返します。https://developers.google.com/appengine/training/fts_intro/lesson2から:

「...一部の検索クエリは、開発Webサーバー(ローカルで実行)では完全にはサポートされていないため、デプロイされたアプリケーションを使用して実行する必要があります。」

別の便利なリンクは次のとおりです: https ://developers.google.com/appengine/docs/python/search/devserver

于 2013-08-26T03:03:06.487 に答える