ongaeshi
ongae****@gmail*****
2012年 12月 20日 (木) 10:59:50 JST
ongaeshiです。 2012年12月19日 22:08 Kouhei Sutou <kou****@clear*****>: > 須藤です。 > > In <CA+vp****@mail*****> > "[groonga-dev,01138] 特定条件にマッチするレコードの一括削除" on Tue, 18 Dec 2012 10:03:02 > +0900, > ongaeshi <ongae****@gmail*****> wrote: > > > rroongaで特定の条件にマッチするレコードを削除する時、 > > > > def remove_match_path(path) > > result = search(path) # 内部で Groonga::Table#select を呼んでレコードを抽出 > > > > result.each do |record| # 検索結果をeachで辿って・・ > > @table[record.path].delete # Groonga::Recored#delete で削除 > > end > > end > > > > ・・という方法をとっていますが、数万オーダー位の > > レコードを削除しようとすると時間がかかり困っています。 > > ですよね! > > > 少し調べてみた所、 > > > > groonga 1.2.9リリース > > http://groonga.org/ja/blog/2011/12/29/release.html > > > > にて「レコードの一括削除に対応」というトピックを見つけました。 > > > > 紹介されていた「特定条件にマッチするレコードの一括削除」を > > 【rroongaから】行うことは可能でしょうか? > > できません! > > なので、作ります! > ↓こんな感じのものを作ると思います。 > > table.delete do |record| > # table.selectと同じように条件を指定する > end > > Cレベルでカーソルを回すのでRubyレベルでループを回してレコー > ドを削除するよりも断然速くなると思います! > おお!ありがたいですー。 実装されるのを楽しみにしております。 -- /****************************************** ongaeshi MAIL: ongae****@gmail***** WEB: http://ongaeshi.me Twitter: http://twitter.com/ongaeshi ******************************************/