図書データベース
KRSKさんとの話にinspireされて,去年の7月からの懸案にやっと手を付けた.図書のデータベースで,検索方法を改善して欲しいというのだ.今まで,
keywordfield: 書名 著者 発行者 発行年
というフィールドがあって,そこに
select * from hoge where keywordfield like '%キーワード%';
というような検索をしていた.しかし,これでは附属図書のOPACのようにand検索したり,雑誌名の略誌名で検索することができない.そこで,キーワードを配列に分割し,正規表現で検索することにした.
select * from hoge where (keywordfield ~ '(^| )キーワード1( |$)') and (keywordfield ~ '(^| )キーワード2( |$)');
これだけ書くと簡単なようだが,""でくくったらどうするとか,*が含まれていたときの処理などを入れると,このwhere句を生成するだけで大変だった.