Groongaで学ぶ全文検索 2015-10-02 に参加した
cf. https://groonga.doorkeeper.jp/events/31859
どう使うか見てみよう !
参加者全員から「今の知識」と「どういう知識をつけられたらうれしいか」を聞いて内容を決め
た結果を反映し
今日は使ってみる !
受講者は Rails が身近だということで、講師のチョイスで題材は Mroonga となった。
シンプルに全文検索
Rails + MySQL で、全文検索してみる。LIKE 検索である。
LIKE 検索を全文検索だと捉えたことがなかったので新鮮だった。
MySQL では LIKE 検索を逐次検索として処理する。
このため、検索対象が増えると遅くなる
(検索エンジン考えるとき、検索に 1 秒かかるかどうかがひとつの判断基準)
閑話休題
MySQL との接続でトラブルあったが、以下で解消。
Rails mysql2でrake db:createがエラー問題 - Qiita
では、全文検索 !
Mroonga インストール。Mac OS X なら homebrew でインストールできる。
brew install https://raw.github.com/mroonga/homebrew/master/mroonga.rb --use-homebrew-mysql
インストールが済んだら、MySQL のストレージエンジンを Mroonga へ差し替える。
InnoDB へ Add-On するようなイメージを勝手にもっていたが
Mroonga は ストレージエンジン なので 差し替え になる。
- ALTER TABLE 句を使ってエンジン差し替え
cf. Mroonga コマンドリファレンス(以降もリファレンスより引用箇所あり)
ALTER TABLE table_name ENGINE = mroonga
- インデックス作成
- RDBMS と同じにインデックス張るだけ。
CREATE FULLTEXT INDEX index_name ON table_name(column_name, ...)
SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("..." IN BOOLEAN MODE)