wrsその5
あいかわらずwrs。 英語版、韓国語版、中国語版へのリンク追加。 サマリーを少し賢くした。 カテゴリー表示。 全データ検索する前に必ずキャッシュ検索をするようにした。 体感的にはずっと速くなった。 キャッシュ検索とは、以前にも書いたが、今回は、 編集回数200回以上、登録ユーザ20名以上の記事だけを別テーブルにした。 これがキャッシュ。 全部でおよそ16000ページしかなく、ここだけ検索かければかなり速い。 全データはおよそ100万件弱ある。 ていうかここ以外のページを普通にリンクたどってたどりつくのはかなり難しい。 まあ実用上特に問題なかろうと。 ロングテールをぶちきってるわけだな(笑)。
代わりにランダム表示などはやや遅くなったので、まあいらんわなと削除。
関連する人気記事が異様に重くなってしまった。うーんと。 とりあえず無効化した。
大学は冒頭の一行がかならずテンプレートで自動生成されるようになっているので、 それに対応した。
if /\{\{大学([^}]*?)\}\}/ =~ t daigaku = $1 /大学名=(.*)\s*\|/ =~ daigaku name = $1 /ふりがな=(.*)\s*\|/ =~ daigaku kana = $1 /学校種別=(.*)\s*\|/ =~ daigaku type = $1 /本部所在地=(.*)\s*\|/ =~ daigaku place = $1 /国=(.*)\s*\|/ =~ daigaku nation = $1 text = "'''#{name}'''(#{kana})は、#{place}に本部を置く#{nation}の#{type}大学である。" end
こんな感じ。 Rubyですね。 また、index.phpでは内部リンクをアンカータグに書き換えているのだが、正規表現が自力ではわからず、 仕方なくmediawikiのソースをのぞいてみる。
$summary = preg_replace('/\'\'\'(.+?)\'\'\'/u', '<b>$1</b>', $summary); $summary = preg_replace('/\[\[([^\]\|]+)\|([^]]+?)\]\]/u', "<a href=\"$jawiki$1\">$2</a>", $summary); $summary = preg_replace('/\[\[([^\]]+?)\]\]/u', "<a href=\"$jawiki$1\">$1</a>", $summary);
preg_replace使ってさくっとこんな感じでよさそう。
テンプレートも抽出することにした。