検索技術、または検索エンジンを書くことの難点

むかしむかし、自分の検索エンジンを書くというアイデアが思い浮かびました。 私はまだ大学で勉強していた非常に長い時間前でしたが、大規模なプロジェクトを開発するための技術についてはほとんど知りませんでしたが、私は数十のプログラミング言語とプロトコルに堪能で、その時点で私のサイトがたくさんありました。



まあ、私は巨大なプロジェクトへの渇望を持っています、はい...



当時、それらがどのように機能するかについてはほとんど知られていない。 英語の記事で、非常に少ない。 紛争の過程で生まれたものを含め、私と彼らによって掘られた文書やアイデアに基づいて私の検索を知っていた私の友人の何人かは、今、一般的にこのトピックに関する新しい検索技術を考え出す良いコースを取っています非常に興味深い作品を開発しました。 これらの作品は、とりわけ、グーグルを含むさまざまな大企業の新しい発展につながりましたが、私は個人的にこれと直接関係はありません。



現時点では、PRの計算、統計トピックの収集、ランキング機能の学習、メニューや広告などの無関係なページコンテンツを切り取るという形でのノウハウなど、多くのニュアンスを備えた独自の検索エンジンを学習しています。 1日あたり約50万ペー​​ジのインデックス作成速度。 これはすべて私の2台のホームサーバー上で回転しています。現在、システムを5台の無料サーバーに拡張し、アクセスできるようにしています。





ここで、初めて、人前で、私が個人的に行ったことを説明します。 Yandex、Google、およびほとんどすべての検索エンジンが内部からどのように私に知られているかに多くの人が興味を持つと思います。



このようなシステムの構築には多くのタスクがありますが、一般的なケースではほとんど解決できませんが、いくつかのトリック、概念、およびコンピューターのハードウェアがどのように機能するかを十分に理解することで、システムを大幅に簡素化できます。 例として、数千万ページの場合に最大のRAMに配置できないPRの再カウントは、特に私のように、情報に貪欲で、1桁以外のより多くの有用なものを保存したい場合に特に重要です。 別のタスクは、少なくとも2次元データベースであるインデックスの保存と更新であり、インデックスが発生したドキュメントのリストが特定の単語と比較されます。



ただ、Googleは、ある推定によると、インデックスに5,000億ページ以上を保存していると考えています。 各単語が1ページに1回だけ出現し、これを保存するために1バイトが必要な場合-これは不可能です。 少なくともページのIDを保存する必要があります-4バイトから、インデックスのボリュームは500GBになります。 実際には、1ワードが平均して最大10回ページに表示されます。30〜50バイト未満の場合、めったに入力できない情報量、インデックス全体が1000倍に増加します。 そして更新するには?



まあ、それがすべてどのように機能し、どのように機能するか、体系的に話し、PRを迅速かつ増分的にカウントする方法、数百億および数十億のページテキスト、そのアドレスを保存する方法、アドレスですばやく検索する方法、さまざまな部分がどのように編成されているかデータベースの何百ものギグでインデックスをインクリメンタルに更新する方法、まあ、学習ランキングアルゴリズムを作成する方法をお教えします。



今日、検索に使用されるインデックスのみのボリューム-57GBは、毎日約1GBずつ増加しています。 圧縮されたテキストのボリュームは25Gbです。また、他にも多くの有用な情報を保存していますが、その豊富さのために計算が非常に困難です。



私のプロジェクトに当てはまる記事の完全なリストを以下に示します。

0. 検索テクノロジー、または検索エンジンを書くことの難点

1. 検索エンジンの開始場所、またはクローラーに関するいくつかの考え

2. Web検索アプライアンスに関する一般的な言葉

3. データフロー検索エンジンの仕事

4. サイトのインデックス作成時のページの重要でない部分の削除について

5. RDBを使用するときにアプリケーションのパフォーマンスを最適化する方法

6. 検索エンジン用のデータベースの設計について少し

7. AVLツリーとその適用範囲

8. URLとそのストレージを操作する

9. 検索エンジンのインデックスを作成する



All Articles