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

執筆者:

関連記事

Rails3.2でフォームの順番をjQuery UI sortableで並べ替えてSubmit~acts_as_list

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

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

simple_formからdatepickerを使うには~ui_datepicker-rails3

  github.com/kristianmandrup/ui_datepicker-rails3 目次1 Gemfile2 js3 css4 initializer5  使う6 できた G …

no image

Rails4でOpenDocumentText(.odt)を作成~serenity(未完)

StackOverFlowでの質問に返事が来てたよ!ヽ(=´▽`=)ノ stackoverflow.com/questions/13080178/encodingundefinedconversion

no image

Rubyでローカルで使うgemをつくる~bundler

  目次1 bundlerのインストール2 bundle gem ファイル名3 gemspec4 lib5 パッケージ化6 インストール7 使い方 bundlerのインストール gemパッケ …