タグ検索の不具合を修正&最終取得タグ判別修正

前回のエントリーでgifnksmさんからご指摘のあった、
「最終取得タグを含めない」で検索した画面で、指定したタグを含む、1回しか取得されていない動画については最終取得であるかないかに限らず必ず表示されてしまう。
という現象を修正しました。たぶん正常に動作するようになったと思います。

そしてMnstさんからご指摘のあったタグ検索時の不具合も修正し、除外タグ条件も追加しました。
以下修正の概要です。
●検索システムを大幅に変えました。
●「動画検索(ほぼ一致検索)」を「動画検索(ニコニコ動画式検索)」と変え、ニコニコ動画のタグ検索となるべく同じような検索結果が得られるようにしています(いきます。)
●タグ検索時のレスポンスを改善しました。が、検索条件が増えると遅くなるのは変わっていないです。キャッシュ式にはしたくないのでサーバを変えるまではスピードがアップする可能性が低いかも。
●動画検索時のソート条件「Good投票が多い順」「Bad投票が多い順」はレスポンスが悪すぎたので廃止しました。
●検索文字列「/」と「#」が検索できるようになりました。これに伴い、URLがちょっと変わりました。
 「nicotag.jp/tag/〜」→「nicotag.jp/tag?s=〜」
 以前のURL形式でもアクセスできるようにしていますが、「/」か「%2f」を含むタグはサーバーエラーになります。
●除外タグは、検索タイプ(あいまいやニコニコ動画式)と同じ除外検索を行います。たとえば、
 →あいまい検索で除外タグを「アニメ」としたときは「ニコニコアニメチャンネル」も除外タグ条件に含まれます。
 →ニコニコ動画式で除外タグを「アニメ」としたときは「ニコニコアニメチャンネル」は除外タグ条件に含まれません。
 →完全一致式で除外タグを「アニメ」としたときは「アニメ」(半角)や「あにめ」は除外タグ条件に含まれません。
 →タグ検索時の除外タグは動画検索(あいまい検索)と同じあいまい除外です。

今回の修正で、タグの検索文字列は前回のエントリーのコメントでMnstさんから情報をいただいている、NFKC正規化という変換を行って検索しています。具体的には、

                                • -

【取得時】
タグ取得→NFKC正規化→大文字を小文字に→英数記号を全角に変換→検索用テーブルに保存
【検索時】
検索文字列を取得時と同じプロセスを経て変換し、検索用テーブルに保存している文字列と比較

                                • -

という風にしていますが、未熟者のプログラムなので期待通りの結果が得られないかもしれません。
でもなるべくニコニコ動画と同じ検索結果になるようにはしていきたいと思っていますので、検索できない文字やニコニコ動画との挙動の違いなどがあればご指摘ください!


だいたい今回の修正はこんな感じですが、いつものようにあんまりテストしていないので、どこかに欠陥が有るかと思いますが、そのときはまたコメントでつっこんでいただければうれしいです。