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

執筆者:

関連記事

状況に応じてRailsのフォームの種類を変える

By: Heidi De Vries – CC BY 2.0 目次1 前提2 仕様の決定3 正規表現の変更4 メタプログラミング第一歩5 helper6 view7 できた8 できてない9 …

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

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

RailsでECサイト構築4 確認メールを送る~spree

  spreeでは注文したときと発送したときにメールを送信できるように設定できるので、やってみた   目次1 設定2 翻訳 設定 管理画面から設定>メールシステムの設定から これで …

Rubyでdocxをいろいろ分析してみた

  目次1 解凍~minizip2 ファイルを開く~File.open3 全ファイルを解凍せずにzip内の必要なファイルだけを開く~zipruby4 置換~gsub5 xmlの操作~noko …

Rails4でフォーム要素を動的に追加したり削除したり〜nested_form

目次1 参考2 前提の環境3 Gemfile4 View5 Controller6 できた7 パーシャル化8 フォームを追加する場所を指定する9 一対一の場合10 そのほか11 番外編: 1つのモデル …