• 締切済み

はてなダイアリーなどの記事投稿時の自動リンク処理

こんにちは。 趣味である分野のデータベースをWebで公開してみようと思っています。 はてなダイアリーやWikiの様なものを想定しているのですが、内部的な処理に関して悩んでいます。 はてなダイアリーやWikiなどで新規投稿をすると、本文中の各キーワードに反応して、そのキーワードに関する記事があれば自動的にその記事にリンクが張られたりしますよね。 例)PHPの記事→本文中のHTMLの単語をクリック→HTMLの記事に飛ぶ この自動リンクの処理はどうやって行われているのでしょう。 想像としては、 新規投稿→既存の投稿記事のタイトルをリストアップ→正規表現で投稿した記事にキーワードが含まれているかチェック→マッチしたら該当記事へのリンクをする(a要素を埋め込む?)→リンク処理後の本文をデータベースへ書き込み、投稿処理完了。 といった流れなのですが、これだと記事を削除した時、他の全ての本文に削除する記事のキーワードが含まれているかどうかチェックして、含まれていればリンクを外さなければならない為、とても非効率的です。 という事は、投稿時ではなく、記事を閲覧するタイミングで記事の本文中のキーワードをリンク処理しているのか・・・と、どうにも頭を悩ませています。 知恵をお貸しいただけないでしょうか。 よろしくお願いします。

みんなの回答

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

基本的には、 >記事を閲覧するタイミングで記事の本文中のキーワードをリンク処理 こちらです。 閲覧時の処理を減らすには、簡単には一回閲覧された記事をキャッシャしておくことことになると思います。この場合キャッシュの更新をどのタイミングで行うか(どのような頻度で)というのが問題になりますが。「部分評価」とかのキーワードで検索するとか。 あるいは、文字列検索の負荷を減らすために、投稿時に、その記事に含まれる文字列のインデックスを作成しておく(N-gram など)なんてことも考えられます。

mihosaku3
質問者

お礼

お返事ありがとうございます。 閲覧時のタイミングですか・・・試しにCafeWikiというものを設置してみましたが、それもどうやら閲覧時にリンク処理しているみたいでした。 閲覧時に処理する方針で行こうかなと思います。 部分評価とか、N-gramとか聞き慣れない単語が出てきて、自分の勉強不足を痛感しています。 それらの単語を参考に、もうちょっと勉強した方がいいですね。

関連するQ&A

専門家に質問してみよう