[groonga-dev,02043] Re: [rroonga] Groonga::Table#paginate の結果から参照元のレコードのidを取得したい

Back to archive index

ongaeshi ongae****@gmail*****
2014年 1月 9日 (木) 14:02:01 JST


おんがえしです。

ありがとうございます、試してみます!

2014年1月9日 11:29 Kouhei Sutou <kou****@clear*****>:
> 須藤です。
>
> In <CA+vpKiqQL=XNwzZX6b_CjtaU****@mail*****>
>   "[groonga-dev,02039] [rroonga] Groonga::Table#paginate の結果から参照元のレコードのidを取得したい" on Thu, 9 Jan 2014 01:49:31 +0900,
>   ongaeshi <ongae****@gmail*****> wrote:
>
>> ある Groonga::Array を生成した際、Groonga::Table#select の結果から実レコードのidを取得したい時は
>>
>> results = array.select("aaa")   # 検索
>> record = results.first          # 検索結果からレコードを取得
>> id = record.key.id              # 実レコードのidを取得
>>
>> で取得出来ますが、 Groonga::Table#paginate の結果からは取得出来ないようです。
>>
>> results = array.select("aaa")   # 検索
>> results.paginate(               # さらにページネーション処理
>>   [["_score", :desc]],
>>   :page => 1)
>> record = results.first          # ページネーション結果からレコードを取得
>> id = record.key.key.id          # エラー、record.key の結果が nil になる
>>
>> paginateの結果から実レコードのidを取得することは可能でしょうか?
>
> 可能です!
>
> record.value.key.idでいけます!
>        ^^^^^
>        keyじゃなくvalue
>
> 検索結果は順番が関係ないので一時Groonga::Hashで返すのですが、
> paginateは順番が関係あるので一時Groonga::Arrayで結果を返すの
> です。Groonga::Hashにはキーがあるので、そこに実レコードのIDが
> 入っているのですが、Groonga::Arrayにはキーがないので、valueの
> ところに実レコードのIDが入っています。
>
> 検索結果に対してのrecord.keyは
>
>   検索結果の一時Groonga::Hashのキーに入っている実レコードの
>   IDを取得してGroonga::Recordオブジェクトを返す
>
> ということをしています。
>
> 一方、paginateの結果に対してのrecord.valueは
>
>   paginate結果の一時Groonga::Arrayのvalueに入っている実レコー
>   ドのIDを取得してGroonga::Recordオブジェクトを返す
>
> というようになります。
>
>
> ちなみに、sortも同じようにGroonga::Arrayを返すのでrecord.key
> ではなくrecord.valueになります。
>
> --
> 須藤 功平 <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 mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev



-- 
/******************************************
 ongaeshi
 MAIL:   ongae****@gmail*****
 WEB:   http://ongaeshi.me
 Twitter: http://twitter.com/ongaeshi
 ******************************************/




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