Yomi-Search用タグクラウド完成までの道のり(2)
まだ、完全ではないのですが「タグクラウド化」に成功しました!よし!って感じです!「kazuking searchのトップページと実は一般には目に触れないであろうページ「http://search.kazuking.net/」と言う検索専用ページに機能させました。
ちなみに「search」と言うサブドメインのページは随分前からあるのですが、「パッ」としないので、ディレクトリ検索でエラーの時とWeb検索でバナーをクリックした時にしかたどり着けません。当初は色んなAPIでの検索を設置したのですが、色々覚えるうちに「マッシュアップ」とやらがやりたくなり外しちゃいました。いずれは・・・と色々考えております。
さて、タグクラウドはまだ完成はしていません。
っと言うのも一応管理しやすいようにフォームから更新作業が出来るようにしてるんですが、今のところ「タイムスタンプ」と言う機能を使っていません。これも勉強なんですがこの機能を使えるようになると、「新たに追加されたタグ」とか「急上昇タグ」みたいなのが導入しやすくなります。
今はタグのカウント方法がちょっと微妙な感じでして、一つ一つのタグを配列化して個々に全タグから個数を見つけると言う不可解なソート方法を取っています。そのせいで「SE」と言うタグは「SEO」や「SEO対策」などにもマッチしてしまい、結果文字数が少ないタグは数が多くカウントされてしまってます。
正規表現とやらでどうにかなりそうなのですが、ちょっと壁にぶつかっております。「タイムスタンプ」と「正規表現」をうまく覚えスマートなソースに書き換えれば晴れて「タグクラウドPHP版」は完成で「Perl版」に取り組もうかと思ってます。
それとタグ検索に使用してる「tagcloud.cgi(search.cgi改良)」を$Slog[15]だけにマッチするように改良しました。純粋にタグにだけマッチするので、いずれは検索結果のページとかも変えたりしたいと思ってます。改造したのは「open_for_search関数」だけなんですが「$eval_line」の部分を、
- $eval_line .=<<'EOM';
- while($line=<IN>){
- $fl=1;
- @Slog=split(/<>/,$line);
- $Slog[15]=~tr/[A-Z]/[a-z]/;
-
- EOM
- #ワード検索部分
- if($#words_a>=0){ #and検索
- $eval_line .=<<'EOM';
- if($fl){
- foreach $word(@words_a){
- if(index($Slog[15],$word) < 0){$fl=0; last;}
- }
- }
- EOM
- }
- #データ格納部分
- $eval_line .='if($fl){$line{$i}=';
- if($sort eq "id"){$eval_line .='$Slog[0]';}
- else{$eval_line .='$Slog[3]';} #mark
- $eval_line .='; push(@write,$line); $i++;}';
$eval_line .='}';
としました。ま、ちょっと書き換えたのと削除しまくっただけですが。性質上「or・not検索」はないので削除したんですが、「and検索」は何故か怖くて削除出来ませんでした(笑)おかしなところあったら(誰も真似はしないと思いますが・・・)すんません。
それと「kazuking search」のタグクラウドは現在「~回以上使われた」で表示させていて、今は「15回以上使われたタグ」として機能してます。全タグを抽出した「タグクラウド」を見てみたら凄い事になって噴出しそうになりました(笑)
サンプルで「2回以上」のタグクラウドを添付してみます。興味があったらご覧下さい。フリーズしない程度のものなんで・・・「サンプル」
以上、道のり(2)でした!
Recent Comment