蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

図書データベース

KRSKさんとの話にinspireされて,去年の7月からの懸案にやっと手を付けた.図書のデータベースで,検索方法を改善して欲しいというのだ.今まで,

keywordfield: 書名 著者 発行者 発行年

というフィールドがあって,そこに

select * from hoge where keywordfield like '%キーワード%';

というような検索をしていた.しかし,これでは附属図書のOPACのようにand検索したり,雑誌名の略誌名で検索することができない.そこで,キーワードを配列に分割し,正規表現で検索することにした.

select * from hoge where (keywordfield ~ '(^| )キーワード1( |$)') and (keywordfield ~ '(^| )キーワード2( |$)');

これだけ書くと簡単なようだが,""でくくったらどうするとか,*が含まれていたときの処理などを入れると,このwhere句を生成するだけで大変だった.