[groonga-dev,00483] Re: rroongaのoffset、limit

Back to archive index

Kouhei Sutou kou****@clear*****
2011年 4月 4日 (月) 10:15:24 JST


須藤です。

In <bf2739c7-9f61-3ebd-9767-622983d0990e @ api103>
  "[groonga-dev,00482] rroongaのoffset、limit" on Mon, 04 Apr 2011 04:08:12 +0900,
  "Endo Akira" <endo4****@goo*****> wrote:

> rroongaですが、offset、limitを使うにはどうしたらいいでしょうか。

Table#sortを使ってください。
  http://groonga.rubyforge.org/rroonga/Groonga/Table.html#method-i-sort

> Groonga["items"].select(offset: 0, limit: 10)
> 
> とやったら、そんなkeyはないよ、と怒られました。

主キー(_keyカラム)で昇順にソートしてoffsetとlimitを使う場
合は以下のようになります。
  Groonga["items"].sort([["_key", :asc]], offset: 0, limit: 10)

もし、ページネーションをしたいのであればTable#paginateの方が
便利です。
(あ、メソッドのドキュメントを書き忘れている。。。)
  http://groonga.rubyforge.org/rroonga/Groonga/Table.html#method-i-paginate

↓で↑と同じ動作になります。
(:pageは0ベースではなく1ベースなことに注意。)

  Groonga["items"].paginate([["_key", :asc]], page: 1, size: 10)

paginateから返ってくるテーブルオブジェクトはsortから返って来
るテーブルオブジェクトと違ってGroonga::Paginationモジュールが
extendされています。このため、Groonga::Paginationモジュールの
メソッドを使って、返ってきたオブジェクトからページネーション
用の情報を取得することができます。

(あ、こっちもドキュメントを書き忘れている。。。)
http://groonga.rubyforge.org/rroonga/Groonga/Pagination.html

> なお、rroonga1.2.0をinstallしたら、groongaは1.0.0しかはいらないようなのですが。

もう少し詳しく状況を教えてもらえますか?

以下のスクリプトを実行した結果を見せてもらえると助かります。

  require 'groonga'

  p Groonga::VERSION
  p Groonga::BINDINGS_VERSION
  $LOADED_FEATURES.each {|path| system("ldd #{path}") if /groonga.so/ =~ path}


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

プログラミングが好きなソフトウェア開発者を募集中:
  http://www.clear-code.com/recruitment/




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