[groonga-dev,04025] Re: ドリルダウン結果の任意のkeyの順位を取得したい

Back to archive index

Naoya Murakami visio****@gmail*****
2016年 5月 6日 (金) 18:02:33 JST


村上です。

動的カラム機能すごくいいですね!

ソースを読んで、rank()関数とドリルダウンでも動的カラム
を作れるように挑戦したいと思います。



2016年5月6日 11:52 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <CANM+HhcjeYcFPO+w0Ujv_m10j9****@mail*****>
>   "[groonga-dev,04023] ドリルダウン結果の任意のkeyの順位を取得したい" on Fri, 29 Apr 2016
> 18:12:32 +0900,
>   Naoya Murakami <visio****@gmail*****> wrote:
>
> > Groongaでドリルダウン結果の任意のkeyの順位を取得できるようにしたいと
> > 考えています。
> >
> > たとえば、
> >
> > _key, _nrecs
> > 東京, 5000
> > 神奈川, 3000
> > 兵庫, 300
> >
> > というドリルダウン結果がある場合、兵庫が3番目であることを知りたいです。
> >
> > 数が少ない場合は全部だせばいいのですが、1万件とかになると全部
> > 吐き出すのはやりたくないです。
> >
> > そこで、以下のような実装案を考えてみました。
> >
> > 1. グループ結果に順位を割り当てる
> > --drilldown[label].calc_type RANK
> >
> > 2. ドリルダウン結果をfilterする
> > --drilldown[label].filter '_key == "タグA"'
> >
> > RANKをわざわざ割り当てるのは、filter後でもグループ結果時点の順位を
> > 得るためです。
> > (filterしない場合は_idでランクはわかりますが、filterすると変わるので。)
>
> なるほど。いわゆるウィンドウ関数が欲しいということですね。
>
> ウィンドウ関数をcalc_typeで実現するのはキビシイです。というのは、
> calc_typeを計算するときは前後のレコードの情報を知らないからです。RANK
> を実現するためには、該当レコードが何番目か?という情報が必要ですが、前
> 後のレコードの情報を知らないとソートできないので計算できないのです。ま
> た、_nsubrecsでソートするためにはドリルダウンがすべて終わっている必要
> がありますが、calc_typeはドリルダウンしながら計算するのでこの時点では
> 必要な情報が足りません。
>
> ということで、別のアプローチが必要になります。
>
> masterに https://github.com/groonga/groonga/issues/461 で説明している
> 動的カラム作成機能を入れました。これと同じような感じで、
>
>   --drilldown[label].column[rank].stage initial \
>   --drilldown[label].column[rank].type UInt32 \
>   --drilldown[label].column[rank].flags COLUMN_SCALAR \
>   --drilldown[label].column[rank].value 'rank()' \
>   --drilldown[label].column[rank].sortby _nsubrecs
>
> とできるようにするのはどうかなぁと思いました。
>
> で、ここで定義したrankはoutput_columnsで使えます。
>
>   --drilldown[label].output_columns '_key, _nsubrecs, rank'
>
> ーーdrilldown[label].filterはよいと思います。
>
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/>
>
> Groongaベースの全文検索システムを総合サポート:
>   http://groonga.org/ja/support/
> パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
>   http://www.clear-code.com/recruitment/
> リーダブルコードワークショップ:
>
> http://www.clear-code.com/services/code-reader/readable-code-workshop.html
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



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