[groonga-dev,01994] Re: Groongaのgeo_in_circle関数を利用した場合に、特定の位置を中心とした場合にIndexが効いていないように見える件

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 12月 13日 (金) 10:48:29 JST


須藤です。

In <CABUf=JsZzn****@mail*****>
  "[groonga-dev,01991] Groongaのgeo_in_circle関数を利用した場合に、特定の位置を中心とした場合にIndexが効いていないように見える件" on Thu, 12 Dec 2013 12:09:26 +0900,
  (Takatomo Okitsu) 沖津 貴智 <takat****@dena*****> wrote:

> 先日はGroongaを囲む夕べで発表の機会をいただきまして大変ありがとうございました。

いえいえ、こちらこそ発表ありがとうございました!

スライドも公開されているので、当日参加できなかった人はこちら
を見てみてください。スマホアプリからGroongaの位置情報検索を
使うときに参考になるはずです。
  https://speakerdeck.com/okitsutakatomo/groonga-with-mapkit

Groongaは全文検索以外にも有用なんですね!

> 今回のメールの件ですが、Groongaの位置情報周りで1点バグと思われる挙動を見つけたので、その報告になります。

ありがとうございます!

> 先日からGroogaの検索結果がタイムアウトとなる事象が頻繁に発生し、こちらで解析を行ったところ、geo_in_circle関数を利用し、特定の位置を中心として検索をかけた場合、Indexが効かなくなる?(検索が非常に遅い?)ケースが見つかりました。
...
> いろいろ調べてみたのですが、どうも緯度経度がどちらもマイナスになる(もしくはマイナスではないがゼロに近い)場合にほぼ確実に遅くなり、逆にそれ以外の条件では高速に結果が帰ってきます。

geo_in_circle()は北半球の東側だけのことしか想定して実装して
いないのでそうなっても仕方がないだろうというのが実情です。

なので、

> こちら現時点では仕様ということになりますでしょうか?

となります。

が!これはGroongaの世界進出に障害となるので、対応したいと思
います。今月のリリースか来月のリリースまでには対応します。


実は、今月のリリースから入る代替案があります。

今月のリリースからは(geo_in_circle()ではなく)
geo_in_rectangle()が全世界対応になります。もし、
geo_in_circle()の全世界対応が今月のリリースに間に合わなかっ
た場合は、geo_in_circle()の代わりにgeo_in_rectangle()を使う
ようにする、と世界中どこの範囲でも高速に検索できるようになり
ます!


もし、今月のリリースを使っても遅いケースがあったら教えてもら
えるとうれしいです。まだ、最適化の余地は残っているので、そこ
らへんを調整してもっと高速にできるかもしれないと思っています。
そのあたりの調整に協力してもらえると助かるのです。


バグ報告ありがとうございました!

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

Groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index