SQL::AbstractとMySQLのFulltext Search

| コメント(0) | トラックバック(0)
DBIx::Class経由でSQL::Abstractを使っているわけですが、このたびPostgreSQLからMySQLに引っ越ししようかと思ってるサービスがありまして、そこで問題にぶち当たりました。

Ludia(PostgreSQL)の場合は対象のカラムに対してオペレーターをかますので、column => { '@@' => '*D+ ....' } (新しいLudiaは%%か)とかできるわけですが、MySQLの場合はMATCH(...) AGAINST(...)を使うので カラム→オペレーター→引数という形にできない。

もちろん 'MATCH(...)' => \'AGAINST(...)'ってやってもいいんだけど、なんかわかりにくい気がしてた。

で、色々考えた末、これが俺の中で一番きれいという判断となった
$sqla->select($table, { '/* table.fts_column */' => \'MATCH(fts_column) AGAINST("whatever")' });
基本/* */とか嫌いなんだけど、この場合はあってよかった。

Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ