Railsで使えるGem

CarrierWaveで添付したファイルをrroongaで全文検索

投稿日:

Carrierwave

Carrierwaveは、Railsでファイルのアップロード機能を提供するライブラリ.

carrierwaveuploader/carrierwave

Ruby on Rails 3.2でファイルアップロード〜CarrierWave & RMagick

今回は次の記事の応用.
Rails4.0で添付したpdfファイルの中身を全文検索の対象にする〜carrierwave、pdftotext、pg_bigm

rroonga

rroongaは、全文検索エンジンgroongaのrubyバインド.
もっと高度な機能を提供するActiveGroongaというgemもある.

サンプルを参考にした.
Rails4.1で全文検索〜rroonga

Gemfile

application.rb

lib/以下にオートロードのパスを通す.

config/initializers/groonga.rb

groongaデータベースに接続する設定をする.

lib/tasks/groonga.rake

groongaのスキーマをセットアップするrakeファイルを作る.
適当に全文検索に必要そうなカラムを作成しておく.

bundle exec rake -Tで確認.

rakeタスクを実行

添付ファイルのテキスト登録

pdftotextのインストール

ipaフォントのインストール

app/uploaders/file_uploader.rb

今回は、拡張子で適当に判断することにした.
modelには、アップロードしたファイルのインスタンスが入っている.
model.bodyはカラム.

app/uploaders/pdf_to_text.rb

app/models/document.rb

次に、after_saveでgroongaにも必要な情報を登録する.

lib/document_indexer.rb

groongaへの登録削除はインデクサーで別ファイルにする.

全文検索してみる

app/controllers/main_controller.rb

app/models/document.rb

モデルでsearchメソッドを定義.

lib/document_searcher.rb

groongaの検索も別ファイルで.これもサンプルどおり.

done!

サンプル
seventhsense/document_box

-Railsで使えるGem
-, , ,

執筆者:

関連記事

Refinery CMS3.0にBootstrap3.1を適用する

目次1 Gemfile2 Sprocketを設定3 application.htmlをoverrideする4 Grid Layout5 Navbar6 Panel7 Well8 できた Gemfile …

Rubyでデータクリーニング~mechanize & active_support

  オライリー・ジャパンから「d3をはじめよう」という本が発売されたので読んだ 棒グラフ、折れ線グラフ、インタラクション(マウスオーバーで丸が大きくなるとかラベル表示とか、横のリストからグラ …

Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現

前提 Railsのテーブル並び替えを実装する Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard 目次1 作戦(ストラテジー)2 have_contentの正規表現 …

Rails3.2でTwitterBootstrap導入のあれこれ

  目次1 sass-rails-bootstrap導入2 Layout関係3 Notification4 confirmをmodalにする5 SimpleForm導入6 kaminari導 …

Rails3.2とBackbone.jsでサーバーサイドのソーティング

By: Haldane Martin – CC BY 2.0   Rails3.2とBackbone.jsでサーバーサイドのフィルタリング 次はソートを実装したい 目次1 サーバ …