Endo Akira
endo4****@goo*****
2011年 5月 13日 (金) 10:44:43 JST
須藤様 いつもありがとうございます。 touchというのは見逃していましたが、残念ながらtouchだけではうまく いかないようです。 データベースはrroongaを使った独立プログラムで、相対パスで都度ゼロから作り直し、 コピーしてやっています。したがって、touchの動作がタイムスタンプの変更だけなら、 もともと変更されていました。 検索もrroongaでやっています。 今回は検証のため、groongaをインタラクティブに動かして、データベースだけ別途 入れ替えるという方法を試みましたが、それでもうまくいきませんでした。 遠藤 > > さて、毎晩DBを更新しているのですが、groongaのキャッシュ機能のために、サーバー > > を立ち上げなおさないとキャッシュからの検索結果が返ってきてしまいます。 > > > > DBの更新は夜に1回ですので、その時にキャッシュをクリアすることができます > > でしょうか。 > > データベースの更新はrroongaで行い、検索はgroongaサーバーに > HTTP(かgqtp)で行っているということであっていますか? > > であれば、以下のように更新が終わったあとに > Groonga::Database#touchを呼んでください。 > > Groonga::Database.open(...) do |database| > # データベースの更新 > # ... > database.touch > end > > これで、groongaサーバもデータが更新されたことに気づけるので、 > groongaサーバを再起動しなくてもキャッシュがクリアされるはず > です! >