2006-03-30

確かにtagのAND検索をするモジュールが必要だ。

 ついさっき

はてなブックマークだと、入力時に一旦 parse して分解してしまって、正規化した tag テーブルにひとつのタグでひとつのレコードという形で保存してある。これだと tag に index 張れば普通に検索できる。というか普通こうするんだと思ってた。Tags with MySQL

ってのを見かけて、

普通そうでしょー、と主張してみる。というか、RDBMSは正規化してナンボだと思ってるので。全文検索使うならRDBMSじゃないほうが便利な気がするし……。

と思ったのだけれど、コメントを見ると

# kazeburo 『tagテーブルを作ってレコードを追加〜っていうのが普通だと思います。

ただ、複雑なTagの検索、aとbを含んで、cとdを含まないエントリーとか言う時にboolean modeみたいな方法がとれたらSQLが複雑にならなくて楽だなということです』

とか書れてました。そういう時はClass::DBI::Sweetを使えば勝手にSQLが生成されて問題ないっすよ。こうやれば簡単に……あれ、できないっぽい?!

 うーむ。僕はCDBI::SweetのJOINを活用してサクっと解決するもんだと思ってて気にしてなかったのですが、もし本当にできないと*1ちょっと困る。

 SQLそのものはサラっと書ける気がするんで自動生成することそのものは問題ない気がするけど、どういうインターフェイスにするかは悩みどころ。

MyData::Article->search({
  'tags.name' => {
    -and => [qw/ foo bar baz /],
    -nor => [qw/ hoge fuga /],
  },
});

みたいな感じでしょうか*2

今日もYAPC::Asiaに行きましたよ。

 今日も思い出せるままに。

 弾さんの話を聞いた感じでは「utf8フラグ≒Stringフラグ」と考えたほうがいいみたいな気がしました。入出力の直後・直前でフラグを操作すればいいんだとは思うけど、全部でやってないとひどい目にあうしなぁ。Template-Toolkitってencodingを指定できたっけとか、DBD::mysqlって文字コード見てるのかなとか。

 Perl6はまあ事前に知っている話以上ではなかった気がしたけど、何か新情報はあったのかな。ちゃんと聞き取れてないので……。

 Haskellはなんかすごく好みの言語っぽい。入門書が出るとか聞いたので、是非とも買ってみよう。そうそう、Audreyさんを見たらなんとなくバグ猫たいにゃんを思い出したんだけど、分かってくれる人はいるカナ?

 svkは超便利っぽく聞こえたよ。さっそく使わなくちゃ。これで微妙に使ってたり使ってなかったりするSubversionをちゃんと活用できるか?

 ――とか、そんな感じでした。

 今日は2トラックになってて全部聞けなかったのが残念至極。

*1:ちゃんと調べてないんで、ひょっとしたらできるかもとか……。

*2:というか、こう書けばCDBI::Sweetで検索できると思ってた。実はできる?