【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

AutomaticIncrementalSearch - 自己組織化検索

目次

自己組織化検索

概略

簡単に説明すると、「要素が注目されるたびに、それを開始位置に近いほう(先頭など)に移動させておく。」 という最適化手法である"自己組織化"を、検索アルゴリズムに適用したもの。 頻度に偏りがある検索条件に対して、統計的に見てかなりの効果を発揮する。

実装

具体的には以下のような実装が考えられる。 まず、searchrank.dbファイル等にn件のページ名のリストを持ち、検索前にコンテナに保持しておく。 次に、コンテナに登録された順に検索を行う。その後、コンテナに登録されていないほうを探す。 (もちろん、前者実行の段階ですでに検索結果が表示件数の上限に達していれば、後者を全て省略してもよい。 最後に、検索結果に現れたページ名のリストを対象に、コンテナ内容に対して繰上げ処理を行い、 次の呼び出しに備えてsearchrank.dbに情報を保存する。

メリットとデメリット

短期的に見れば余計な処理が増えるため、ある程度のキャッシュ件数・ページ数が無いと、 最適化の効果は目に見えて現れないかもしれないし、場合によっては遅くなるかもしれない。 しかし何にせよ、コンテンツの量に時間が比例する単純な全件検索の遅さに辟易している Web開発者が、このような比較的実装が簡単な手法の導入を検討してみることは有益であろう。

無断参考リンク : http://www.s34.co.jp/cpptechdoc/article/selforg/index.html - 自己組織化検索(C++)