第15章. ウェブ・クローラーと検索エンジンを設計する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ホリデーシーズンに愛する人たちとの集まりを計画している。あなたは料理が好きで、すべての料理を自分で作ろうと決めたが、作りたい料理のレシピがない。ここで考えられる最善の解決策は何か?友人にレシピがないか聞いたり、料理本を探すのもいいが、シンプルで効果的な解決策はGoogle検索を使うことだ。Googleはインターネット全体を見て、特定の料理の作り方について最適な結果を発見する。そんな膨大な情報の海の中から、Googleはどうやって完璧な答えを発見するのだろうか?この章では、このような検索システムのアーキテクチャを掘り下げることで、その解明を試みる。
図15-1に示すように、システム全体は、ウェブ・クローラーと検索エンジンの2つのサブシステムから構成されている。ウェブ・クローラーは、、基本的にウェブ・コンテンツをクロールする役割を担うソフトウェアである。インターネット上のコンテンツは指数関数的に増加しており、ウェブ・クローラーは定期的にコンテンツをクロールして、最新の結果を維持する必要がある。検索エンジンは 、 、ウェブ・クローラーによって蓄積されたコンテンツの上に置かれ、コンテンツの中からユーザが検索したキーワードを探し、最も有用な結果を提示できるように蓄積する。
この基本的な理解をもとに、提案されたシステムの機能要件と非機能要件を集めることから始めよう。
図15-1. ウェブクローラーと検索エンジンのアーキテクチャを一万フィートで見る
システム要件
ウェブクローラ は複数の目的に使うことができるので、1つのユースケースに絞ることで、設計を正しい方向に進めやすくなる。この章では、検索エンジンを介したコンテンツ検索が解決しようとしている主な問題文だが、著作権侵害のようなウェブ監視タスクなど、他の問題にも目を向けることができる。データを収集するためにウェブ・クローラーが本番システムには必要だが、ユーザから見れば、製品は検索エンジンである。
機能要件と非機能要件
システムの機能要件は以下の通りである:
-
ユーザの検索クエリに対する上位の検索結果(Webページのタイトル、サブタイトル、URL)を取得する。
-
頻繁に更新される結果のコンテンツ鮮度率を特定する。
NFR :
- 高い利用可能性
-
システムはほとんどの時間、ユーザのクエリに対応できる。
- 高い信頼性
-
クエリは正しく提供されるべきである。
- 高い拡張性
-
システムは、ウェブページの数やウェブページ上のコンテンツなど、規模の拡大に対応できなければならない。
- 検索クエリの遅延が少ない。
-
ユーザのクエリにマッピングされるページ数が膨大であっても、システムはミリ秒以内に最も関連性の高い結果を返すべきである。
- データの鮮度
-
検索クエリを提供する基礎となるストレージは、定期的に更新されるべきである。
このユースケースでは、データの一貫性はそれほど重要ではない。Webサイトで利用可能で、 検索エンジンで検索可能なコンテンツの遅れは許容範囲である。
システムのバウンダリー、つまりシステムに期待されないことも文書化すべきである。このユースケースの場合、以下のものが含まれる: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access