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

Rubyからdocxを生成する

    前提 Rubyでdocxをいろいろ分析してみた 変数の仕様~正規表現 いろいろなパターンで試してみた 例えば、こんな文 [crayon-5906b4888d76c70575 …

簡単にグラフが作成できるC3.jsをRailsでつかってみた

By: Nguyen Hung Vu – CC BY 2.0 目次1 C3.js2 gon3 複数の時系列データで一方にはある時点のデータがあるけど他方にはある時点のデータがないみたいな場 …

SASS/SCSS+COMPASS+zurui-sass-railsで角丸・グラデ・半透明・テキストシャドウ・ボックスシャドウ

By: Ole Houen – CC BY 2.0 sass-lang.com/ Sassの基礎 (全15回) ドットインストール ネストを覚えた人のためのSassの便利な使い方 comp …

Ubuntu Server 12.04.1にいま流行のDiscourseをインストールしてみた

By: Wonderlane – CC BY 2.0 目次1 はじめに2 環境3 インストール4 情報 はじめに すでにGitHubのトレンドRepoでスター数がTwitterのFligh …

no image

RailsでRedisを使う例のメモ

最近よく見かけるようなのでメモ Redisって大量にメモリを積んでないとダメかと思ってたけど、思ったよりいろんな方面に用途がありそう(リンク先の情報はわたしは未検証です) Redisの基礎 (全14回 …