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
-, , ,

執筆者:

関連記事

no image

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

    CarrierWaveはRubyでファイルのアップロードを簡便にするGemです。 RMagickはImageMagickという画像ファイルを加工するソフトのラッパーです。C …

no image

kaminari + Twitter Bootstrap2テーマでFirst,Prev,Next,Lastだけおかしい場合

前につくったTwitter Bootstrap2用のkaminariテーマをコピーして使おうとしたら表題の通り、First,Prev,Next,Lastがおかしい あと…も表示されない G …

MIddlemanでrails-assets.orgをつかってbowerのコンポーネントをつかう

By: Simon Cunningham – CC BY 2.0 middlemanは静的なサイトのジェネレータ rails-assets.orgは「the frictionless pr …

Rails3でECサイト構築8 都道府県の登録~spree

  都道府県の登録を忘れていた seedを追っていくとわかるのだけど、rake db:load_file[tablename.yml, dir]で登録できる サンプルは、spree_core …

no image

Rails3.2+MongoDBでつくったアプリをheroku+mongoHQにアップしたよ

Stack Overflowはなんでも答えてくれる エラーメッセージをコピーしてググればたいていの答えはStack Overflowで出尽くしている 目次1 Gemfile2 herokuにアプリ作成 …