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で、範囲内のジオポイントの 1 つはlat:27.233247, lng-82.48819800000001.

次のようにGoogleマップ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)

ここで何が問題なのですか?ジオポイント以外のフィールドで検索すると結果が返されるため、検索が機能することはわかっています。

検索 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 に答える