Railsで使えるGem

全文検索エンジンGroongaをRubyから利用するライブラリのチュートリアルをやってみた〜rroonga

投稿日:

Groonga

groonga.org/ja/

Groongaのインストール

Mac OSX

rroongaをインストールする前にgroongaをインストールしておいた方がいいみたい.

トークナイザーとしてmecabを使いたいときは–with-mecabオプションをつける.

groonga.org/ja/docs/install/mac_os_x.html#id3

トークナイザーの一覧を見たいときには、コマンドラインでtokenizer_list

rroongaのインストール

ranguba.org/ja/
「全文検索エンジンgroongaを囲む夕べ #1」のRuby枠の資料公開

チュートリアルの開始

ranguba.org/rroonga/ja/file.tutorial.html

データベースの作成

  • ファイルが大量にできるので、どこかtempディレクトリを作成した方がいい.

データベースへの接続

なにかあって、いったんirbを終了した場合はデータベースに再接続する必要がある.

テーブルの作成

Groongaには4種類のテーブルがあり、ここではハッシュテーブルを作成する.

作成したテーブルには次のようにアクセスできる.

レコードの追加

カラムを作る前にレコード作成というと不思議な感じがするけど、ハッシュテーブルのキーを登録できる.

カラムの追加

change_tableメソッドにブロックを与える.
titleという名前のText型のデータを持つカラムを作成するには次のとおり.

titleカラムへのアクセスは次のとおり.

全文検索用のインデックスを作成する

全文検索用のテーブルを作成する

Groongaでは別テーブルを作ってそこに単語を収納するみたい.
こんどはパトリシアトライというタイプのテーブルを作成する.

Itemsテーブルにインデックスを設定する

titleカラムにインデックスを設定するのは次のとおり.

サンプルデータをいれてみる

全文検索してみる

selectを使って、Rubyという単語が含まれているか検索するには次のとおり.

record.key.keyというのは、recordのキーをたどってItemsのレコードを取得して、Itemsのレコードのkeyを取得している.
これは次のように表現すれば、自動的にkeyをたどってくれる.

関連するテーブル

UserがItemに関してCommentできるようなテーブルを作ってみる.

Usersテーブルの作成

Commentsテーブルの作成

参照にはreferenceを使い、別名を使うこともできる.
また、time型のカラムを作成することも可能.

Commentsテーブルのcontentにインデックスを作成

サンプルデータの挿入

ユーザーデータの登録

アイテムデータの登録

コメントデータの登録

メソッド化

サンプルデータをさらに追加

全文検索その2

Commentsテーブルのcontentを検索

これは同じ

返りレコードの操作1〜日付順に並べ替え

返りレコードの操作2〜グループ化

少し複雑な検索

検索インデックスはItems.titleとComments.contentに貼られているけど、Items.titleの方を10倍のスコアにして、Itemsのスコアはさらに参照しているComments.contentのスコアの合計で重み付けして並び替える.

情報

-Railsで使えるGem
-, ,

執筆者:

関連記事

no image

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

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

WindowsのRubyでxlsxファイルにアクセスする~roo

By: Hajime NAKANO – CC BY 2.0 目次1 rooのインストール2 rooを使ってみる(基本)3 シートを指定する4 セルの値を確認する5 行列を数える rooのイ …

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

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

Rails4でつかえるインラインエディタを試してみた〜X-editable-rails

目次1 x-editable2 bootstrapを導入3 x-editable-rails4 サンプルアプリ x-editable 文字をダブルクリックして編集できるやつ x-editable vi …

テキストマイニングの初歩 Rubyで形態素解析を行う〜ruby-mecab

By: Cracker Jack – CC BY 2.0 環境 ubuntu server 12.04 英語は単語を空白で区切るのでコンピュータでの解析に向いているが、日本語は助詞などを続 …