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

Rails3.2でBackbone.jsとPrivate_pubでToDoアプリをリアルタイム化(できた!)

参考 Rails3.2でリアルタイムメッセージング~Private_pub、Faye Rails3.2とBackbone.jsでToDoアプリを作ってみた~backbone-on-rails &nbs …

Rubyでd3.jsのapiリファレンスの一覧を取得してくる~mechanize

  d3.jsにはlayoutというおおまかに準備されたレイアウトがあって、その中にあるTreeレイアウトを試してみることにした d3.js自身のapiリファレンスが階層構造になっているので …

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

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

Rails3.2とBackbone.jsでGoogle CalendarライクなカレンダーにCRUD(後編)~fullcalendar-rails

目次1  前回2 UPDATE1~バグの訂正3 UPDATE2 ~ ドラッグとリサイズでデータ更新4 DELETE~イベントの削除5 バグがあった → 解決しました!6  herokuにサンプルアップ …

TwitterBootstrapでアイコンが微妙な感じだったらFontAwesomeを試してみるといい

かもしれない fortawesome.github.com/Font-Awesome/ hallojsで使ってるのは上 github.com/bokmann/font-awesome-rails gi …