2016-12-23 4 views
3

AlgoliaのGeo-search on steroidブログ記事を読んだあと、insidePolygon機能を使用してORフィルタを実装し、すべてうまくいきました。 しかし、2,3日後、結果はゼロに戻り始めました。Algolia - Multiple insidePolygon

2番目のポリゴンを設定した後で、これを確認できました。

すべてのlat/lngタプルを一致した結果から確認しました。ポリゴン値のlat/lngの文字列はすべて問題なく表示されています。

最初のポリゴンでinsideポリゴンを設定すると、返される結果は正しいです。 しかし、2番目のポリゴンを設定すると、Algoliaはゼロの結果を返します。

ここは私がやっていることです。最初のポリゴン:

setQueryParameter("insidePolygon", "51.565237,-0.127758,51.548264,-0.061937,51.507314,-0.034756,51.466401,-0.062055,51.449465,-0.127758,51.466401,-0.193462,51.507314,-0.220760,51.548264,-0.193580"); 

これは22の結果を返します。すべての良い。

第二ポリゴン:

setQueryParameter("insidePolygon", "0.089927,0.000000,0.063588,0.063588,0.000000,0.089927,-0.063588,0.063588,-0.089927,0.000000,-0.063588,-0.063588,-0.000000,-0.089927,0.063588,-0.063588"); 

今、私は0の結果を持っています。これはOR演算子なので、この動作は本当に奇妙です。少なくとも、最初のポリゴンでフィルタリングした22の結果を表示する必要があります。

ご協力いただければ幸いです。

ありがとうございます!

答えて

5

あなたの質問を正しく理解していない限り、setQueryParameterへの2回目の呼び出しは、実際に設定した最初のポリゴンを上書きしています。

私の推測では、2番目のポリゴンには結果が含まれていないので、一度設定するとヒットしません。

複数の多角形の労働組合を作るために、あなたはこの構文を使用することができます。setQueryParameter("insidePolygon", [[...polygon1's points...], [...polygon2's points...]])

あなたの場合には次のようになります。

setQueryParameter("insidePolygon", [[51.565237,-0.127758,51.548264,-0.061937,51.507314,-0.034756,51.466401,-0.062055,51.449465,-0.127758,51.466401,-0.193462,51.507314,-0.220760,51.548264,-0.193580], [0.089927,0.000000,0.063588,0.063588,0.000000,0.089927,-0.063588,0.063588,-0.089927,0.000000,-0.063588,-0.063588,-0.000000,-0.089927,0.063588,-0.063588]]); 

あなたはもちろん、2つの以上のポリゴンを持つことができます。

+0

ありがとうOliver! Algoliaの人たちは、これを投稿してから数日後に私を助けてくれました。私はここに来て答えを忘れてしまいました。しかし、あなたは絶対に正しいです;) – semeano

+0

ああ、完璧な、私は知らなかった!私もAlgoliaの男です;) あなたの日曜日をお楽しみください! –