日記

検索エンジニアになりたい

検索エンジンのしくみ

全文検索エンジンにはgrep型とインデックス型の2種類がある。

grep型とはコマンドのgrepと同じで文字列を最初から順番に検索していく方法。逐次検索型ともいう。

インデックス型とはあらかじめインデックスを作成しておきそこから検索していく方法。大規模の検索に向いている。一般的な検索エンジンはほぼこのインデックス型にあたる。

 

ここではインデックス型の仕組みを説明する。

検索エンジンには索引構築部(Indexer)索引(Index)検索部(Searcher)の主に3部で構成されている。

索引構築部(Indexer)は検索したいテキスト文書を検索しやすい索引に変換する作業を担当するところ。具体的な仕組みとしては転置索引や接尾辞配列など。

索引(Index)は索引そのもの。OS上のファイルとして保存されるために圧縮が必要。索引の物理的な構造をつくりあげるのがこの部分。

検索部(Searcher)は圧縮された索引を復元し、要求したクエリに応じて検索結果をかえす部分。最も速度が要求される部分。

 

検索エンジンの流れとしては以下のようになる。

  1. Web上の文書・文書データベース・その他色々なファイルをクローラ(*1)で回収する。
  2. Web上の文書・文書データベース・その他色々なファイルなどは様々な構造をもつので、それらをフラットなテキスト文書に変換する。
  3. テキスト文書を索引構築部で索引に変換する。
  4. 索引としてテキスト文書がOS上のファイルとして保存・圧縮される。
  5. ユーザーが検索キーワードを入力する。
  6. 指定されたテキスト文書を復元する。
  7. ユーザーに復元したテキスト文書を提示する。

*1 クローラ…Web上の文書を収集・管理するロボット

 

参考図書

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏:書籍案内|技術評論社