これらの本にわかりやすく書いてあると思います。
▽2
●
a-kuma3 ●425ポイント ベストアンサー |
まず、インデックスの話。
分厚い百科事典を想像してください。
ある言葉について調べようとします。
一ページ目からめくって、その言葉が出てくるかどうかを見ていくと、とても大変です。
索引から探しましょうか。
索引は、アイウエオ順になっているので、最初から順番に見ていかなくても、大体の位置が分かります。
単語を見つけました。
見出しだけではなく、その言葉を内容に含んでいるページも載っています。
探すページを絞り込むことができたので、後は、そのページを順番に見ていくだけです。
検索処理でのインデックスも、概ね、このようなことをやってます。
次に、インデックス以外の高速化の話。
やり方はいろいろありますが、一番大事なのは、分散処理です。
今度は、一冊だけじゃなく、十巻セットくらいの百科事典を想像しましょうか。
索引を使って、どこにありそうなのかを調べるところまでは一緒です。
索引から、一冊だけではなく、複数の巻にあることが分かりました。
ずいぶん絞り込まれているので、同じように順番に調べて行けば良いのですが、もっと早く探す方法はないでしょうか?
おや、弟くんが暇そうにしていますね。
彼にも手伝ってもらいましょう。
同時に二人で調べれば、半分の時間で探せそうです。
実際の検索処理では、複数の検索処理を大量にこなさなくちゃいけないので、こんなに単純ではありませんが、原理は分かりやすいですよね。
googleアルゴリズムは、最近こんなものを取り入れたようですね。
検索結果の表示順位を決定するアルゴリズムにサイトの応答速度を取り入れると発表した。
Googleの検索アルゴリズムは、検索語との関連性や被リンク数など、
さまざまな要素に基づいてランキングを決定している。
Googleはサイトの応答速度がユーザーにとって非常に重要と考えることから、
この要素をアルゴリズムに加味することにしたという。
つまりあまりに重いサイトは検索から除外するというアルゴリズムを導入したということです。
http://netsupman.com/affili/296.html
インデックス作成型全文検索という仕組みで行います。
まず、処理の対象となるコンテンツを単語に分解します。
そして分解した単語をインデックスと呼ばれるデータベースに登録していきます。
あとは、単語をキーにしてデータベースを検索していきます。
この2段階の処理に対しては、さまざまなシステムが出回っています。
古典的なシステムとしてはNamazuがあります。
http://www.namazu.org/
検索エンジンはさまざまなアプローチがあり、また様々な技術の寄せ集めですのでどうしても解説を行おうとすると下記URLのように総華的になりがちかと思います(勉強に時間がかかる)。また、Googleのようなとしてしまうと少し技術的に特徴があるので、初学者はますます混乱してしまうかもしれません。
連載:検索エンジンはいかにして動くのか?|gihyo.jp … 技術評論社
連載:検索エンジンを作る|gihyo.jp … 技術評論社
ASCII.jp:Googleはなぜ的確に探せるのか?
私は専門家ではないのですが、
・転置インデックス
・Suffix Array
に絞って調べるのがよいとおもいます。これらアルゴリズムで索引さえ作れば、ごくごく簡単な検索エンジンくらいは作れるのではないかと思います。(ただ、このアルゴリズムは恐らくGoogle使ってないんだけどね…)
また調べれば分かると思いますが、転置インデックスで検索エンジンを作ろう的なブログエントリもあるので是非とも参考にしてみてください。
検索エンジンを利用したいだけならば、Apache Solrを始めとする優れたオープンソース・ソフトウェアがあるので参考にしてみてください。