ongaeshi
ongae****@gmail*****
2014年 1月 10日 (金) 00:28:42 JST
record.value.key.id で上手くいきました!ありがとうございます。 ここからは要望なのですが、Record#valueの値が非nilの時は Record#attributesに内容を表示するようにしてもらえないでしょうか? selectの結果を"p record.attributes"すると、 以下のようにkeyにRecordの値が格納されているであろうことが何となく分かります。 {"_id"=>2, "_key"=>{"_id"=>6, "filename"=>"xxxx", "suffix"=>nil, "text"=>"xxxxx", "timestamp"=>2014-01-02 14:19:51 +0900}, "_score"=>1} 一方、paginateの結果を"p record.attributes"すると以下のように表示されます。 {"_id"=>1, "_score"=>23} valueの値もattributesの結果に含まれれば、Rroongaの内部構造を知らなくても 何となく record.value.key.id で実レコードのidを取れる事が分かるようになるのではないかと思います。 2014年1月9日 14:02 ongaeshi <ongae****@gmail*****>: > おんがえしです。 > > ありがとうございます、試してみます! > > 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 > ******************************************/ -- /****************************************** ongaeshi MAIL: ongae****@gmail***** WEB: http://ongaeshi.me Twitter: http://twitter.com/ongaeshi ******************************************/