#1.概要
「検索エンジン自作入門」を読んだので、簡単な内容と感想を投稿します。
#2.背景
自社サービスの検索エンジンの運用を担当しており、先日、AWSのCloudSearchへの移行を実施しました。
フルマネージドサービスで提供されている検索エンジンの仕組みに興味を持ったので、購読することにしました。
#3.内容
Yahoo!Japanの検索エンジン開発チームを担当されていた山田浩之氏と,全文検索エンジンSenna/Groongaの開発に携わってきた末永匡氏による、検索エンジンの仕組みを記載した1冊です。技術的な紹介はもちろん、合わせてサンプルプログラムも紹介されているので、実装レベルで検索エンジンの仕組みを理解することが出来ます。
#4.参考になった内容
①検索エンジンのインデックス(転置インデックス)の作成方法
※「第1章 検索エンジンはいかにして動くのか」参照
検索エンジンでは、大量の文書から検索キーワードに一致した文書を返却するために、転置インデックスを作成しています。それがどのようなアルゴリズムで作成されているかについて、知識を深めることが出来ました。
②検索の高速化を実現するために その1
※「第3章 転置インデックスを作ろう」参照
検索エンジンでは、インデックスされた文書を高速で検索して返却する必要があります。
すべてのインデックスと文書をメモリ上に乗せれないため、インデックス情報をメモリ上にのせて、文書をファイルシステムに保存します。そのため、ブロック型記憶装置での効率的データ検索に効果がある、「B+木」を利用して管理します。
自分の業務で、アルゴリズムを利用した開発をすることはないですが、高速化するために、
アルゴリズムを利用することが必要なときもあることを知れてよかったです。
③検索エンジンに必要な機能
※「第7章 これからより深く学ぶために」を参照
検索エンジンに必要な、文書のランキング(関連度の算出)、表記ゆれの吸収(シノニム)、ファセット、文字列処理などに関する要素を理解することが出来ました。業務で利用しているの多くのことは知っていましたが、開発する前に読めているとよかったなと思いました。
#5.総括
これから業務で検索エンジンを導入する人や、検索エンジンの理解を深めた人にお勧めです。
導入をする人は、あまりコードなどは読まずに概要だけを押さえる様にするとよいと思いました。