Ruby on Railsで部分一致検索

Ruby on Railsで部分一致検索やってみました。
( DB => Mysql )

params[:content] = "hoge"
@count = Item.count(:conditions =>  ["test_c like ?", "%"+params[:content]+"%"])
@pages, @items=
   paginate(:item, :per_page => 20,
            :conditions => ["test_c like ?", "%"+params[:content]+"%"]
            ) 

もちろんfindでも同じです。

Item.find(:all, :conditions => ["test_c like ?", "%"+params[:content]+"%"])

ポイントは、:conditionsの書き方ですね。

SQL文は、

select * from item where test_c like '%hoge%'

こんな感じですね。

これで、hogeはもちろんaahogeaaやabahoge、hogeaaも検索できるようになりました。


○試した環境
Ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
Rails 1.2.3
Mysql server version: 4.1.22-community-nt


※ちょっと小話
部分一致検索と、全文検索機能と部分一致は違うのですね・・・。

今回、Rails(DB=>Mysql)で部分一致検索しようとして、「FULLTEXTインデックス」を利用しようと思ってしまいました・・・。
だって、「mysql 部分一致」の検索でFULLTEXTの文字がたくさんヒットするから・・・。
「FULLTEXTインデックス」を利用しようとして2時間ほど調べまくりました・・・(--;

MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.9 全文検索関数
MySQLで全文検索 - FULLTEXTインデックスの基礎知識|blog|たたみラボ

FULLINDEXって制約多いよね・・・。
まぁ、FULLINDEXはじめてやってみたし、なかなか良い経験だったかな。今回使わないけど。