FuelPHPでmroongaを使う

MySQLで高速に全文検索するためのオープンソースのストレージエンジン「mroonga」をFuelPHPで使ってみました。

mroongaのインストール自体は、ドキュメントに詳しく載っていますので、特に問題ないかと思います。MySQLがインストール済みの場合は、削除してからmroongaのパッケージを利用した方が良さそうです。

クエリ構築

全文検索の構文自体は、MyISAMのものと同じです。
SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("word")
が、FuelPHPのORMでは、MyISAMの全文検索構文にも対応していないので、DB::expr()を使ってクエリを構築する必要があります。(http://fuelphp.com/forums/discussion/11587)
$query = Model_Sample::find()
	->where(DB::expr('MATCH(column_name)'),
		 '', DB::expr('AGAINST('.DB::quote($word).')'));
where()の2番目のパラメータは演算子(‘=’や’>'等)が入るところですが、ここを空にして
MATCH(column_name) AGAINST("word")
となるようにしています。

その他は、ストレージエンジンがmroongaだからと言って、特別な処理は必要ありません。


コメントは受け付けていません。