
kazeburoさんの所でfulltext使ってtagを実装するネタがアツめなのでちょろっと書いてみる。
SennaのMySQL 2indパッチを使うと、既存のindexとSennaのindex両方を同時に使うことが出来ます。
それが出来ると何が良いと言うと、user idで絞り込みつつtag検索が可能になります。
create table ft_tags( id int unsigned not null auto_increment primary key, user_id int unsigned not null, tags text, index user_id(user_id), fulltext tags(tags) )というテーブルを用意しておき。 user idが2の人のタグ検索をするときに
select id from ft_tags force index(user_id) where match(tags) against('*D+ task femo -終了' IN BOOLEAN MODE) and user_id = 2とクエリを書くだけで、user idで絞り込みつつタグ検索を行うことが出来ます。
order byなんかでもindexが適用できるそうなので、応用範囲は幅広そうです。
task1, taks2とかもtaskで引っかかっちゃうのでtagのセパレータの工夫は必須です。
なんか解決策になってないね。。。
tag検索に特化した検索ライブラリなんてのを実装したらはやるんですかね。